Intel MPI
mpiicc thread_support.c -mt_mpi
MVAPICH2
mpirun_rsh -np 2 –env MV2_USE_CUDA=1 MV2_ENABLE_
Cary MPICH2
Fine-grained Multi-threading Support
Cray-MPICH now offers improved support for multi-threaded applications
that perform MPI operations within threaded regions. Currently, this
feature is available as a separate version of the Cray-MPICH library
that is invoked by using a new compiler driver option, -craympich-mt.
This feature requires CLE release 5.1 or higher, CrayPE version 2.2.0
or higher, and supports both C/C++ and Fortran in the PrgEnv-cray,
PrgEnv-intel, PrgEnv-gnu, and PrgEnv-pgi programming environments.
At this time, this library supports only MPI point-to-point
operations. Applications that perform collective, one-sided, or MPI-
I/O operations within threaded regions will not see any benefits.
Single-threaded applications, or applications that do not currently
perform MPI operations within threaded regions, should continue to use
the default Cray-MPICH library. This feature does not alter the
thread-safety behavior of the default Cray-MPICH library.
Support for larger subsets of MPI operations will be provided in
future releases.
To use the fine-grained threading feature, follow these steps.
Step 1. Compile a multi-threaded MPI application using the
-craympich-mt compiler driver option.
If the code uses static linking:
cc -craympich-mt -o mpi_mt_test.x mpi_mt_test.c
If the code uses dynamic linking:
cc -dynamic -craympich-mt -o mpi_mt_test.x mpi_mt_test.c
Note: The -craympich-mt and -default64 compiler command line
options are mutually exclusive. If both of these options are
specified on a command line, the compiler will ignore the first
one specified and use the second one.
Step 2. Set the environment variables.
export MPICH_MAX_THREAD_SAFETY=multiple
export MPICH_VERSION_DISPLAY=1
Step 3. Run the executable.
aprun arguments ./executable_name
The MPICH_VERSION_DISPLAY environment variable is set in order to
display the version string and verify that the desired library has
been used. The default threading library displays this version string:
BUILD INFO : Built Date Time Year (svn rev rev) MT-G CPR-R
Where MT-G corresponds to the default Multi-threaded MPI library with
global locks.
The new fine-grained threading library displays this version string:
BUILD INFO : Built Date Time Year (svn rev rev) MT-O CPR-R
Where MT-O corresponds to the fine-grained Multi-threaded MPI library
with per-object locks.