Running offload application on Xeon-Phi

Home

It is possible to generate diagnostic output for offload applications that utilize Intel Xeon Phi coprocessors.

The Linux environment variable OFFLOAD_REPORT controls the verbosity of the diagnostic output:

a) When this variable is not set or has the value 0, no diagnostic output is produced.

b) Setting OFFLOAD_REPORT=1 produces output including the offload locations and times.

c) Setting OFFLOAD_REPORT=2, in addition, produces information regarding data traffic.

 

Environment variables defined on the host are automatically forwarded to the coprocessor when an offload application is launched. By default, variable names are not changed on the coprocessor.

In order to avoid environment variable name collisions on the host and the coprocessor, the user can utilize the environment variable MIC_ENV_PREFIX. When this variable is set, only environment variables with names beginning with the specified prefix are be forwarded, and the prefix is stripped on the coprocessor.

Note that the variable MIC_LD_LIBRARY_PATH is an exception. It is never passed to the coprocessor with its suffix stripped, so it is not possible to change the value of LD_LIBRARY_PATH on the coprocessor using environment forwarding.

 

When an offload application is launched, the computation can be split on the processor and coprocessor. In this case the environment variable that defines the number of threads, OMP_NUM_THREADS, is the same for both, but if you want a different number of threads running in the coprocessor, you can set the environment variable as follow:

•    export MIC_ENV_PREFIX=MIC
•    export MIC_OMP_NUM_THREADS=240
•    export OMP_NUM_THREADS=32

In this example, we will have 240 threads running in the coprocessor and 32 threads running in the processor.

 

Thread affinity in OpenMP applications can be controlled at the application level by setting the environment variable KMP_AFFINITY.

The format of the variable is

KMP_AFFINITY=[<modifier>,...]<type>[,<permute>][,<offset>]

Note that in order to use different affinity masks on the host and on coprocessors with offload applications, the environment variable MIC_ENV_PREFIX  may be set. For example, the setup below  results in affinity type compact  on the host and balanced  on the coprocessor.