mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
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:
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user