Developer Guide

  • 2021.1
  • 12/04/2020
  • Public Content
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 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

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.