Skip to content

Commit

Permalink
Add the "Intel Compiler Support" section to discuss classic and oneAPI
Browse files Browse the repository at this point in the history
support.
  • Loading branch information
theurich committed Jul 17, 2023
1 parent b7cbd23 commit 14aaa1e
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions src/doc/ESMF_install.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1111,6 +1111,37 @@ \subsection{Supported Platforms}
will be stored in a separate directories so the results will be kept
separate for different architectures or options.

\subsubsection{Intel Compiler Support (Classic and oneAPI)}

ESMF supports the Intel compiler suite via {\tt ESMF\_COMPILER=intel}. Starting in 2020, Intel began promoting their
new LLVM-based C/C++ and Fortran compiler line under the oneAPI brand. As of 2023, the older compilers are still
part of the Intel compiler suite and referred to as Intel Compiler Classic. ESMF supports both the classic and oneAPI
compiler lines. The following paragraphs povide important details that allow users to fine-tune the interaction
with the Intel compilers.

Under {\tt ESMF\_OS=Linux}, with {\tt ESMF\_COMPILER=intel} and {\tt ESMF\_COMM=mpiuni} set, the C, C++, and
Fortran compiler front-ends default to the classic options {\tt icc}, {\tt icpc}, and {\tt ifort}, respectively. Any
of these defaults can be overridden by explicitly setting the {\tt ESMF\_C}, {\tt ESMF\_CXX}, or {\tt ESMF\_F90}
environment variables to the oneAPI options {\tt icx}, {\tt icpx}, and {\tt ifx}, respectively.

Under {\tt ESMF\_OS=Linux}, with {\tt ESMF\_COMPILER=intel} and {\tt ESMF\_COMM=intelmpi} set, the C, C++, and
Fortran compiler front-ends default to the MPI compiler wrappers {\tt mpiicc}, {\tt mpicpc}, and {\tt mpiifort},
respectively. It depends on the IntelMPI installation details whether classic, oneAPI, or a mixture of compilers
are used underneath the MPI wrappers. The IntelMPI defaults can be overridden by explicitly setting the
{\tt I\_MPI\_CC}, {\tt I\_MPI\_CXX}, or {\tt I\_MPI\_F90} environment variables. This is an IntelMPI feature.

The recommendation for Cray systems that use the Cray compiler wrappers {\tt cc}, {\tt CC}, and {\tt ftn},
respectively, is to use {\tt ESMF\_OS=Unicos}. In most cases this setting is detected automatically by the ESMF
build system, and should {\em not} be overridden.

Under {\tt ESMF\_OS=Unicos}, with {\tt ESMF\_COMPILER=intel}, the C, C++, and Fortran compiler front-ends default to
{\tt cc}, {\tt CC}, and {\tt ftn}, respectively, regardless of the {\tt ESMF\_COMM} setting. The appropriate
classic, oneAPI, or mixed compiler combination is typically determined by the Intel environment module loaded.
Common module names on Cray systems are {\tt intel-classic}, {\tt intel-oneAPI}, and {\tt intel}, respectively.

{\bf Tip: } Use the ESMF "{\tt make info}" target to query compiler version information. This can be used to determine the
appropriate settings, and to diagnose issues before kicking off the complete ESMF build procedure.

\subsection{Building the ESMF Library}
\label{BuildESMF}

Expand Down

0 comments on commit 14aaa1e

Please sign in to comment.