From 473e000bed9d4f19144e83b68ad68173313830f4 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Mon, 28 Jan 2019 19:19:09 +0100 Subject: [PATCH] ENH: enable MPI library variants (#1153) - in addition to managing different vendors and versions, it may also be necessary or desirable to have a particular variant (eg, profiling, release, etc). Devise a new meaningful name for the variant and create a corresponding wmake rule. Eg, SYSTEMOPENMPI-profiling with a corresponding "wmake/rules/linux64Gcc/mplibSYSTEMOPENMPI-profiling" file that has suitable content for your system. CONFIG: intel-mpi use intel64/ paths only for config and wmake rules (#1153) - previously adjusted the config files, but missed the changes required for the wmake rules too. Now simply migrate to using "intel64/{include,bin,lib}" instead of the older naming "{include,bin,lib}64" These changes work since at least intel-mpi 2015 (5.x), but possibly earlier as well --- META-INFO/api-info | 2 +- etc/bashrc | 1 + etc/config.csh/mpi | 16 +++++----------- etc/config.sh/mpi | 17 +++++------------ etc/cshrc | 1 + wmake/rules/linux64Clang/mplibINTELMPI | 4 ++-- wmake/rules/linux64Cray/mplibINTELMPI | 4 ++-- wmake/rules/linux64Gcc/mplibINTELMPI | 4 ++-- wmake/rules/linux64GccKNL/mplibINTELMPI | 4 ++-- wmake/rules/linux64Icc/mplibINTELMPI | 4 ++-- wmake/rules/linux64IccKNL/mplibINTELMPI | 4 ++-- wmake/rules/linuxIA64Icc/mplibINTELMPI | 4 ++-- 12 files changed, 27 insertions(+), 38 deletions(-) diff --git a/META-INFO/api-info b/META-INFO/api-info index 38797539e9..0821b0ef51 100644 --- a/META-INFO/api-info +++ b/META-INFO/api-info @@ -1,2 +1,2 @@ api=1812 -patch=190123 +patch=190129 diff --git a/etc/bashrc b/etc/bashrc index 630328a4f0..89ecd7eb82 100644 --- a/etc/bashrc +++ b/etc/bashrc @@ -93,6 +93,7 @@ export WM_COMPILE_OPTION=Opt # [WM_MPLIB] - MPI implementation: # = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPI | MPICH | MPICH-GM | # HPMPI | CRAY-MPICH | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI +# Also possible to use INTELMPI-xyz etc and define your own wmake rule export WM_MPLIB=SYSTEMOPENMPI diff --git a/etc/config.csh/mpi b/etc/config.csh/mpi index cb7f278d51..8ee7a44b12 100644 --- a/etc/config.csh/mpi +++ b/etc/config.csh/mpi @@ -33,7 +33,7 @@ unsetenv MPI_ARCH_PATH MPI_HOME setenv FOAM_MPI dummy # Fallback value switch ("$WM_MPLIB") -case SYSTEMOPENMPI: +case SYSTEMOPENMPI*: # The system installed openmpi, locations discovery via mpicc. setenv FOAM_MPI openmpi-system _foamEtc -config openmpi-system # <- Adjustments (optional) @@ -52,7 +52,7 @@ case SYSTEMOPENMPI: endif breaksw -case OPENMPI: +case OPENMPI*: setenv FOAM_MPI openmpi-1.10.4 _foamEtc -config openmpi # <- Adjustments (optional) @@ -243,7 +243,7 @@ case SGIMPI: _foamAddLib $MPI_ARCH_PATH/lib breaksw -case INTELMPI: +case INTELMPI*: if ( $?I_MPI_ROOT ) then # I_MPI_ROOT: The Intel MPI Library installation directory @@ -300,14 +300,8 @@ case INTELMPI: echo " Currently using '$MPI_ARCH_PATH'" endif - # Newer versions (5.0.3 or earlier?) with intel64/bin ... - if ( -d "$MPI_ARCH_PATH/intel64/bin" ) then - _foamAddPath "$MPI_ARCH_PATH/intel64/bin" - _foamAddLib "$MPI_ARCH_PATH/intel64/lib" - else - _foamAddPath "$MPI_ARCH_PATH/bin64" - _foamAddLib "$MPI_ARCH_PATH/lib64" - endif + _foamAddPath "$MPI_ARCH_PATH/intel64/bin" + _foamAddLib "$MPI_ARCH_PATH/intel64/lib" breaksw endsw diff --git a/etc/config.sh/mpi b/etc/config.sh/mpi index 4f0bd9545a..014bd7bf38 100644 --- a/etc/config.sh/mpi +++ b/etc/config.sh/mpi @@ -33,7 +33,7 @@ unset MPI_ARCH_PATH MPI_HOME export FOAM_MPI=dummy # Fallback value case "$WM_MPLIB" in -SYSTEMOPENMPI) +SYSTEMOPENMPI*) # The system installed openmpi, locations discovery via mpicc. export FOAM_MPI=openmpi-system @@ -58,7 +58,7 @@ SYSTEMOPENMPI) fi ;; -OPENMPI) +OPENMPI*) export FOAM_MPI=openmpi-1.10.4 _foamEtc -config openmpi # <- Adjustments (optional) @@ -261,7 +261,7 @@ SGIMPI) _foamAddLib $MPI_ARCH_PATH/lib ;; -INTELMPI) +INTELMPI*) if [ -n "$I_MPI_ROOT" ] then # I_MPI_ROOT: The Intel MPI Library installation directory @@ -303,15 +303,8 @@ INTELMPI) export FOAM_MPI MPI_ARCH_PATH - # Newer versions (5.0.3 or earlier?) with intel64/bin ... - if [ -d "$MPI_ARCH_PATH/intel64/bin" ] - then - _foamAddPath "$MPI_ARCH_PATH/intel64/bin" - _foamAddLib "$MPI_ARCH_PATH/intel64/lib" - else - _foamAddPath "$MPI_ARCH_PATH/bin64" - _foamAddLib "$MPI_ARCH_PATH/lib64" - fi + _foamAddPath "$MPI_ARCH_PATH/intel64/bin" + _foamAddLib "$MPI_ARCH_PATH/intel64/lib" ;; esac diff --git a/etc/cshrc b/etc/cshrc index cb2f51e6c7..60f61fbcb0 100644 --- a/etc/cshrc +++ b/etc/cshrc @@ -95,6 +95,7 @@ setenv WM_COMPILE_OPTION Opt # [WM_MPLIB] - MPI implementation: # = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPI | MPICH | MPICH-GM | # HPMPI | CRAY-MPICH | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI +# Also possible to use INTELMPI-xyz etc and define your own wmake rule setenv WM_MPLIB SYSTEMOPENMPI diff --git a/wmake/rules/linux64Clang/mplibINTELMPI b/wmake/rules/linux64Clang/mplibINTELMPI index 278e0b0f22..e5f0d01163 100644 --- a/wmake/rules/linux64Clang/mplibINTELMPI +++ b/wmake/rules/linux64Clang/mplibINTELMPI @@ -1,3 +1,3 @@ PFLAGS = -DMPICH_SKIP_MPICXX -PINC = -isystem $(MPI_ARCH_PATH)/include64 -PLIBS = -L$(MPI_ARCH_PATH)/lib64 -lmpi +PINC = -isystem $(MPI_ARCH_PATH)/intel64/include +PLIBS = -L$(MPI_ARCH_PATH)/intel64/lib -lmpi diff --git a/wmake/rules/linux64Cray/mplibINTELMPI b/wmake/rules/linux64Cray/mplibINTELMPI index 278e0b0f22..e5f0d01163 100644 --- a/wmake/rules/linux64Cray/mplibINTELMPI +++ b/wmake/rules/linux64Cray/mplibINTELMPI @@ -1,3 +1,3 @@ PFLAGS = -DMPICH_SKIP_MPICXX -PINC = -isystem $(MPI_ARCH_PATH)/include64 -PLIBS = -L$(MPI_ARCH_PATH)/lib64 -lmpi +PINC = -isystem $(MPI_ARCH_PATH)/intel64/include +PLIBS = -L$(MPI_ARCH_PATH)/intel64/lib -lmpi diff --git a/wmake/rules/linux64Gcc/mplibINTELMPI b/wmake/rules/linux64Gcc/mplibINTELMPI index 278e0b0f22..e5f0d01163 100644 --- a/wmake/rules/linux64Gcc/mplibINTELMPI +++ b/wmake/rules/linux64Gcc/mplibINTELMPI @@ -1,3 +1,3 @@ PFLAGS = -DMPICH_SKIP_MPICXX -PINC = -isystem $(MPI_ARCH_PATH)/include64 -PLIBS = -L$(MPI_ARCH_PATH)/lib64 -lmpi +PINC = -isystem $(MPI_ARCH_PATH)/intel64/include +PLIBS = -L$(MPI_ARCH_PATH)/intel64/lib -lmpi diff --git a/wmake/rules/linux64GccKNL/mplibINTELMPI b/wmake/rules/linux64GccKNL/mplibINTELMPI index 278e0b0f22..e5f0d01163 100644 --- a/wmake/rules/linux64GccKNL/mplibINTELMPI +++ b/wmake/rules/linux64GccKNL/mplibINTELMPI @@ -1,3 +1,3 @@ PFLAGS = -DMPICH_SKIP_MPICXX -PINC = -isystem $(MPI_ARCH_PATH)/include64 -PLIBS = -L$(MPI_ARCH_PATH)/lib64 -lmpi +PINC = -isystem $(MPI_ARCH_PATH)/intel64/include +PLIBS = -L$(MPI_ARCH_PATH)/intel64/lib -lmpi diff --git a/wmake/rules/linux64Icc/mplibINTELMPI b/wmake/rules/linux64Icc/mplibINTELMPI index 278e0b0f22..e5f0d01163 100644 --- a/wmake/rules/linux64Icc/mplibINTELMPI +++ b/wmake/rules/linux64Icc/mplibINTELMPI @@ -1,3 +1,3 @@ PFLAGS = -DMPICH_SKIP_MPICXX -PINC = -isystem $(MPI_ARCH_PATH)/include64 -PLIBS = -L$(MPI_ARCH_PATH)/lib64 -lmpi +PINC = -isystem $(MPI_ARCH_PATH)/intel64/include +PLIBS = -L$(MPI_ARCH_PATH)/intel64/lib -lmpi diff --git a/wmake/rules/linux64IccKNL/mplibINTELMPI b/wmake/rules/linux64IccKNL/mplibINTELMPI index 278e0b0f22..e5f0d01163 100644 --- a/wmake/rules/linux64IccKNL/mplibINTELMPI +++ b/wmake/rules/linux64IccKNL/mplibINTELMPI @@ -1,3 +1,3 @@ PFLAGS = -DMPICH_SKIP_MPICXX -PINC = -isystem $(MPI_ARCH_PATH)/include64 -PLIBS = -L$(MPI_ARCH_PATH)/lib64 -lmpi +PINC = -isystem $(MPI_ARCH_PATH)/intel64/include +PLIBS = -L$(MPI_ARCH_PATH)/intel64/lib -lmpi diff --git a/wmake/rules/linuxIA64Icc/mplibINTELMPI b/wmake/rules/linuxIA64Icc/mplibINTELMPI index 278e0b0f22..e5f0d01163 100644 --- a/wmake/rules/linuxIA64Icc/mplibINTELMPI +++ b/wmake/rules/linuxIA64Icc/mplibINTELMPI @@ -1,3 +1,3 @@ PFLAGS = -DMPICH_SKIP_MPICXX -PINC = -isystem $(MPI_ARCH_PATH)/include64 -PLIBS = -L$(MPI_ARCH_PATH)/lib64 -lmpi +PINC = -isystem $(MPI_ARCH_PATH)/intel64/include +PLIBS = -L$(MPI_ARCH_PATH)/intel64/lib -lmpi