CONFIG: adjust intel compiler and mpi settings (#2056)

- largely as per patch from Jong-Gwan (Jason) Do

NB: the intel-one setup adds in paths for intelmpi.
    Its mpicc version does not harmonize with the OpenFOAM
    system openmpi setup (using mpicc --showme:link).

    Needs adjustment, or use intelmpi instead.

- update name mappings for newer gcc, clang versions
This commit is contained in:
Mark Olesen
2021-04-20 16:24:06 +02:00
parent 8878050ff9
commit d549826528
32 changed files with 285 additions and 50 deletions

View File

@ -6,7 +6,7 @@
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2016 OpenFOAM Foundation
# Copyright (C) 2016-2020 OpenCFD Ltd.
# Copyright (C) 2016-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -23,11 +23,36 @@
# The default values for gcc/clang are not a recommendation,
# but typically correspond to the minimum usable version.
#
# I_MPI_CC, I_MPI_CXX environment variables may be defined for the
# Intel mpicc/mpicxx wrappers
#
#------------------------------------------------------------------------------
# Initial mpi/compiler associations
switch ("$WM_COMPILER")
case Icc*:
setenv I_MPI_CC icc
setenv I_MPI_CXX icpc
breaksw
case Icx*:
setenv I_MPI_CC icx
setenv I_MPI_CXX icpx
breaksw
case Gcc*:
switch ("$WM_MPLIB")
case INTELMPI*:
setenv I_MPI_CC gcc
setenv I_MPI_CXX g++
breaksw
endsw
breaksw
endsw
#------------------------------------------------------------------------------
switch ("$WM_COMPILER_TYPE")
case ThirdParty:
# Default versions (CLANG, GCC, GMP, MPFR, MPC) - override as necessary
# Default/minimum versions (compiler, GMP, MPFR, MPC) - override as needed
set default_clang_version=llvm-3.7.1
set default_gcc_version=gcc-4.8.5
@ -44,6 +69,9 @@ case ThirdParty:
case Gcc:
set gcc_version="$default_gcc_version"
breaksw
case Gcc103*:
set gcc_version=gcc-10.3.0
breaksw
case Gcc102*:
set gcc_version=gcc-10.2.0
breaksw
@ -128,8 +156,11 @@ case ThirdParty:
case Clang:
set clang_version="$default_clang_version"
breaksw
case Clang111*:
set clang_version=llvm-11.1.0
breaksw
case Clang110*:
set clang_version=llvm-11.0.0
set clang_version=llvm-11.0.1
breaksw
case Clang100*:
set clang_version=llvm-10.0.1
@ -184,6 +215,7 @@ UNKNOWN_COMPILER
breaksw
endsw
#------------------------------------------------------------------------------
unset default_gcc_version default_clang_version
unset default_gmp_version default_mpfr_version default_mpc_version

View File

@ -21,9 +21,6 @@
# For USERMPI, the user is responsible for supplying an appropriate
# wmake/rules/General/mplibUSERMPI file and managing all settings
#
# For INTELMPI, note that the (I_MPI_CC, I_MPI_CCX) environment variables
# define the underlying compiler to be used
#
# User adjustments are controlled by these types of files:
# - config.csh/prefs.fjmpi
# - config.csh/prefs.intelmpi
@ -42,6 +39,9 @@
# but are not permitted to unset it.
#
# Environment
# I_MPI_CC, I_MPI_CXX environment variables define the compiler
# to be used the Intel mpicc/mpicxx wrappers
#
# MPI_BUFFER_SIZE overrides 'mpiBufferSize' (controlDict entry).
# Eg, setenv MPI_BUFFER_SIZE 20000000
#
@ -81,7 +81,9 @@ case SYSTEMOPENMPI:
unset libDir
endif
# TDB: extra openmpi major qualifier on name?
#-
# TBD: extra (major) version qualifier on name?
#-
## if ( "$FOAM_MPI" == "sys-openmpi" ) then
## set _foamMpiVersion=`echo "$MPI_ARCH_PATH" | sed -e 's/^.*mpi//'`
## switch ("$_foamMpiVersion")
@ -321,6 +323,7 @@ case SGIMPI:
case INTELMPI*:
setenv FOAM_MPI intelmpi
_foamEtc -config prefs.intelmpi ## Optional adjustments
if ( $?I_MPI_ROOT ) then
@ -340,26 +343,38 @@ case INTELMPI*:
setenv MPI_ARCH_PATH "${MPI_ARCH_PATH:h}"
endif
# Subdir name is FOAM_MPI name
setenv FOAM_MPI "${MPI_ARCH_PATH:t}"
# If subdir is version number only, prefix with 'impi-'
switch ("$FOAM_MPI")
case [0-9]*:
setenv FOAM_MPI "impi-$FOAM_MPI"
breaksw
endsw
#-
# TBD: extra version qualifier on name?
# eg, when subdir is version number only
#-
## if ( "$FOAM_MPI" == "intelmpi" ) then
## set _foamMpiVersion="${MPI_ARCH_PATH:t}"
## switch ("$_foamMpiVersion")
## case [1-9]*:
## setenv FOAM_MPI "intelmpi-${_foamMpiVersion}"
## breaksw
## endsw
## endif
else
echo "${_foamMpiWarning}invalid $WM_MPLIB directory"
echo " => ${MPI_ARCH_PATH}"
echo "Please set I_MPI_ROOT or MPI_ROOT correctly."
echo "Please set I_MPI_ROOT (or MPI_ROOT) correctly."
endif
_foamAddPath "$MPI_ARCH_PATH"/intel64/bin
_foamAddLib "$MPI_ARCH_PATH"/intel64/lib
breaksw
# With/without "intel64/" directory - handled here and in mpi rules
# Path, lib-path may have been set prior to call
if (1) then
if ( -d "$MPI_ARCH_PATH"/intel64/lib ) then
_foamAddPath "$MPI_ARCH_PATH"/intel64/bin
_foamAddLib "$MPI_ARCH_PATH"/intel64/lib
_foamAddLib "$MPI_ARCH_PATH"/intel64/lib/release
else if ( -d "$MPI_ARCH_PATH"/lib ) then
_foamAddPath "$MPI_ARCH_PATH"/bin
_foamAddLib "$MPI_ARCH_PATH"/lib
_foamAddLib "$MPI_ARCH_PATH"/lib/release
endif
endif
endsw