
Add this hook to checkPhase to allow for running MPI application in the sandbox. It detects the MPI implementations and sets the respective environment variables.
55 lines
1.3 KiB
Bash
55 lines
1.3 KiB
Bash
preCheckHooks+=('setupMpiCheck')
|
|
preInstallCheckHooks+=('setupMpiCheck')
|
|
|
|
|
|
setupMpiCheck() {
|
|
# Find out which MPI implementation we are using
|
|
# and set safe defaults that are guaranteed to run
|
|
# on any build machine
|
|
|
|
mpiType="NONE"
|
|
|
|
# OpenMPI signature
|
|
if command ompi_info &> /dev/null; then
|
|
mpiType="openmpi"
|
|
fi
|
|
|
|
# MPICH based implementations
|
|
if command mpichversion &> /dev/null; then
|
|
if [ "$mpiType" != "NONE" ]; then
|
|
echo "WARNING: found OpenMPI and MPICH/MVAPICH executables"
|
|
fi
|
|
|
|
version=$(mpichversion)
|
|
if [[ "$version" == *"MPICH"* ]]; then
|
|
mpiType="MPICH"
|
|
fi
|
|
if [[ "$version" == *"MVAPICH"* ]]; then
|
|
mpiType="MVAPICH"
|
|
fi
|
|
fi
|
|
|
|
echo "Found MPI implementation: $mpiType"
|
|
|
|
case $mpiType in
|
|
openmpi)
|
|
# make sure the test starts even if we have less than the requested amount of cores
|
|
export OMPI_MCA_rmaps_base_oversubscribe=1
|
|
# Disable CPU pinning
|
|
export OMPI_MCA_hwloc_base_binding_policy=none
|
|
;;
|
|
MPICH)
|
|
# Fix to make mpich run in a sandbox
|
|
export HYDRA_IFACE=lo
|
|
;;
|
|
MVAPICH)
|
|
# Disable CPU pinning
|
|
export MV2_ENABLE_AFFINITY=0
|
|
;;
|
|
esac
|
|
|
|
# Limit number of OpenMP threads. Default is "all cores".
|
|
export OMP_NUM_THREADS=1
|
|
}
|
|
|