Intel® MPI Library Developer Guide for Linux* OS

ID 768728
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

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.