ILP64 Support
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 231- 1 are not supported.
- Special MPI typesMPI_FLOAT_INT,MPI_DOUBLE_INT,MPI_LONG_INT,MPI_SHORT_INT,MPI_2INT,MPI_LONG_DOUBLE_INT,MPI_2INTEGERare not changed and still use a 4-byte integer field.
- Predefined communicator attributesMPI_APPNUM,MPI_HOST,MPI_IO,MPI_LASTUSEDCODE,MPI_TAG_UB,MPI_UNIVERSE_SIZE, andMPI_WTIME_IS_GLOBALare returned by the functionsMPI_GET_ATTRandMPI_COMM_GET_ATTRas 4-byte integers. The same holds for the predefined attributes that may be attached to the window and file objects.
- Do not use the-i8option to compile MPI callback functions, such as error handling functions, or user-defined reduction operations.
- Do not use the-i8option 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, thempiifortcompiler wrapper will select the correct Intel Trace Collector library automatically.
- There is currently no support for C and C++ applications.