• 2019 Update 7
  • 03/31/2020
Contents

ILP64 Support

Intel® MPI Library Developer Guide for Linux* OS
The term ILP64 denotes that integer, long, and pointer data entities all occupy 8 bytes. This differs from the more conventional LP64 model, in which only long and pointer data entities occupy 8 bytes while integer entities occupy 4 bytes. More information on the historical background and the programming model philosophy can be found, for example, in http://www.unix.org/version2/whatsnew/lp64_wp.html
Intel® MPI Library provides support for the ILP64 model for Fortran applications. To enable the ILP64 mode, do the following:
Use the Fortran compiler wrapper option
-i8
for separate compilation and the
-ilp64
option for separate linking. For example:
$ mpiifort -i8 -c test.f $ mpiifort -ilp64 -o test test.o
For simple programs, use the Fortran compiler wrapper option
-i8
for compilation and linkage. Specifying
-i8
will automatically assume the ILP64 library. For example:
$ mpiifort -i8 test.f
When running the application, use the
-ilp64
option to preload the ILP64 interface. For example:
$ mpirun -ilp64 -n 2 ./myprog
The following limitations are present in the Intel MPI Library in regard to this functionality:
  • Data type counts and other arguments with values larger than 2
    31
    - 1 are not supported.
  • Special MPI types
    MPI_FLOAT_INT
    ,
    MPI_DOUBLE_INT
    ,
    MPI_LONG_INT
    ,
    MPI_SHORT_INT
    ,
    MPI_2INT
    ,
    MPI_LONG_DOUBLE_INT
    ,
    MPI_2INTEGER
    are not changed and still use a 4-byte integer field.
  • Predefined communicator attributes
    MPI_APPNUM
    ,
    MPI_HOST
    ,
    MPI_IO
    ,
    MPI_LASTUSEDCODE
    ,
    MPI_TAG_UB
    ,
    MPI_UNIVERSE_SIZE
    , and
    MPI_WTIME_IS_GLOBAL
    are returned by the functions
    MPI_GET_ATTR
    and
    MPI_COMM_GET_ATTR
    as 4-byte integers. The same holds for the predefined attributes that may be attached to the window and file objects.
  • Do not use the
    -i8
    option to compile MPI callback functions, such as error handling functions, or user-defined reduction operations.
  • Do not use the
    -i8
    option with the deprecated functions that store or retrieve the 4-byte integer attribute (for example,
    MPI_ATTR_GET
    ,
    MPI_ATTR_PUT
    , etc.). Use their recommended alternatives instead (
    MPI_COMM_GET_ATTR
    ,
    MPI_COMM_SET_ATTR
    , etc).
  • If you want to use the Intel® Trace Collector with the Intel MPI Library ILP64 executable files, you must use a special Intel Trace Collector library. If necessary, the
    mpiifort
    compiler wrapper will select the correct Intel Trace Collector library automatically.
  • There is currently no support for C and C++ applications.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804