Intel® MPI Library Developer Guide for Linux* OS

ID 768728
Date 3/22/2024
Public
Document Table of Contents

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 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.