Navigation and service

Regular and -mt Variants of the ParaStation Modules on Juropa


Can someone help clarify the expected use of the regular and -mt variants of the parastation modules on juropa:

module whatis parastation parastation/gcc: Parastation library for parallel computing (GCC).
parastation/intel: Parastation library for parallel computing (Intel Compiler).
parastation/gcc-mt: Parastation library for multi-threaded parallel computing (GCC).
parastation/intel-mt: Parastation library for multi-threaded parallel computing (Intel Compiler).

Is the expectation that the "-mt" variants should be exclusively/preferentially used for hybrid/mixed-mode applications combining OpenMP+MPI (as seems to be suggested by the module descriptions) and/or also for pure MPI applications using non-blocking communication (where internal MPI threads are used to improve performance)?


The -mt versions have nothing to with internal threads of the MPI-library. Instead, your first assumption is more correct. The actual purpose of the -mt versions is to support higher levels of thread-support within the MPI-library. If you look at MPI_Init_thread(3) the version without -mt supports up to MPI_THREAD_SERIALIZED while the version with -mt supports even MPI_THREAD_MULTIPLE. In principle you can use the -mt version for every application. But it might show less performance (actually, there are additional locks to be handled in this version) and it is not well-tested. Thus, it is suggested to use the version without -mt for applications that use at most the MPI_THREAD_SERIALIZED level of thread support of MPI and the version with -mt only for applications MPI_THREAD_MULTIPLE.