Library Constants#

ISHMEM_THREAD_SINGLE#

The thread support level which specifies that the program must not be multithreaded. See Section Thread Support for more detail about its use.

ISHMEM_THREAD_FUNNELED#

The thread support level which specifies that the program may be multithreaded but must ensure that only the main thread invokes the ishmem interfaces. See Section Thread Support for more detail about its use.

ISHMEM_THREAD_SERIALIZED#

The thread support level which specifies that the program may be multithreaded but must ensure that the ishmem interfaces are not invoked concurrently by multiple threads. See Section Thread Support for more detail about its use.

ISHMEM_THREAD_MULTIPLE#

The thread support level which specifies that the program may be multithreaded and any thread may invoke the ishmem interfaces. See Section Thread Support for more detail about its use.

ISHMEM_MAJOR_VERSION#

Integer representing the major version of Intel® SHMEM Specification in use.

ISHMEM_MINOR_VERSION#

Integer representing the minor version of Intel® SHMEM Specification in use.

ISHMEM_MAX_NAME_LEN#

Integer representing the maximum length of ISHMEM_VENDOR_STRING.

ISHMEM_VENDOR_STRING#

String representing vendor defined information of size at most ISHMEM_MAX_NAME_LEN. The string ISHMEM_VENDOR_STRING is terminated by a null character.

ISHMEM_CMP_EQ#

An integer constant expression corresponding to the “equal to” comparison operation. See Section Point-to-Point Synchronization for more detail about its use.

ISHMEM_CMP_NE#

An integer constant expression corresponding to the “not equal to” comparison operation. See Section Point-to-Point Synchronization for more detail about its use.

ISHMEM_CMP_LT#

An integer constant expression corresponding to the “less than” comparison operation. See Section Point-to-Point Synchronization for more detail about its use.

ISHMEM_CMP_LE#

An integer constant expression corresponding to the “less than or equal to” comparison operation. See Section Point-to-Point Synchronization for more detail about its use.

ISHMEM_CMP_GT#

An integer constant expression corresponding to the “greater than” comparison operation. See Section Point-to-Point Synchronization for more detail about its use.

ISHMEM_CMP_GE#

An integer constant expression corresponding to the “greater than or equal to” comparison operation. See Section Point-to-Point Synchronization for more detail about its use.

ISHMEM_TEAM_INVALID#

A value corresponding to an invalid team. This value can be used to initialize or update team handles to indicate that they do not reference a valid team. When managed in this way, applications can use an equality comparison to test whether a given team handle references a valid team. See Section Team Management Routines for more detail about its use.

Library Handles#

ISHMEM_TEAM_WORLD#

Handle of type ishmem_team_t that corresponds to the world team that contains all PEs in the ishmem program. All point-to-point communication operations occur on PE numbers relative to the world team, and all collective synchronizations that do not specify a team are performed on the world team. See Section Team Management Routines for more detail about its use.

ISHMEM_TEAM_SHARED#

Handle of type ishmem_team_t that corresponds to a team of PEs that share a memory domain. ISHMEM_TEAM_SHARED refers to the team of all PEs that would mutually return a non-null address from a call to ishmem_ptr for all symmetric heap objects. That is, ishmem_ptr must return a non-null pointer to the local PE for all symmetric heap objects on all target PEs in the team. This means that symmetric heap objects on each PE are directly load/store accessible by all PEs in the team. See Section Team Management Routines for more detail about its use.

Environment Variables#

The Intel® SHMEM specification provides a set of environment variables that allows users to configure the implementation and receive information about the implementation.

ISHMEM_VERSION#

If set to any value, print the library version at startup.

ISHMEM_INFO#

If set to any value, print helpful text about all these environment variables.

ISHMEM_SYMMETRIC_SIZE#

Specifies the size (in bytes) of the symmetric heap memory per PE. The resulting size is implementation-defined and must be at least as large as the integer ceiling of the product of the numeric prefix and the scaling factor. The allowed character suffixes for the scaling factor are as follows:

  • k or K multiplies by \(2^{10}\) (kibibytes)

  • m or M multiplies by \(2^{20}\) (mebibytes)

  • g or G multiplies by \(2^{30}\) (gibibytes)

  • t or T multiplies by \(2^{40}\) (tebibytes)

For example, string “20m” is equivalent to the integer value 20971520, or 20 mebibytes. Similarly the string “3.1M” is equivalent to the integer value 3250586. Only one multiplier is recognized and any characters following the multiplier are ignored, so “20kk” will not produce the same result as “20m”. Usage of string “.5m” will yield the same result as the string “0.5m”. An invalid value for ISHMEM_SYMMETRIC_SIZE is an error, which causes the Intel® SHMEM library to terminate the program.

ISHMEM_DEBUG#

If set to any value, enable debugging messages.

ISHMEM_SHMEM_LIB_NAME#

Informs the Intel® SHMEM library of the shared object name (e.g. libshmem.so) of the host-side OpenSHMEM library to be dynamically loaded. The default value is libsma.so.

ISHMEM_ENABLE_GPU_IPC#

Enables the intra-node inter-process communication (IPC) implementation. The default value is 1 which enables use of the Intel® \(\text{X}^e\) Link fabric for inter-GPU communications on the same super-node. The value can be set to 0 for situations in which Intel® \(\text{X}^e\) Link fabric is not available or does not connect all the GPUs.

ISHMEM_ENABLE_GPU_IPC_PIDFD#

Enables the pidfd implementation of IPC. This is enabled by default, but will fail on older Linux kernels that do not support the necessary system calls. In such cases, use ISHMEM_ENABLE_GPU_IPC_PIDFD=0

ISHMEM_ENABLE_ACCESSIBLE_HOST_HEAP#

Places symmetric heap in host unified shared memory (allocated on the host and accessible by the host and device).

ISHMEM_ENABLE_VERBOSE_PRINT#

Includes the file, line, and function along with messages printed by the utility routines and other output for debug, warning, or error reporting.

ISHMEM_RUNTIME#

Selects the host back-end library. Valid options are OPENSHMEM or MPI. These options are case-insensitive strings, so OPENSHMEM, OpenSHMEM, opEnshmem, etc., select the OpenSHMEM back-end, and MPI, mpi, mPi, etc., select the MPI back-end. See Building Intel® SHMEM for more information about using this variable.

ISHMEM_RUNTIME_USE_OSHMPI#

Indicates whether the host back-end is the OSHMPI library.