Installing Amber with Intel oneAPI Compilers
Introduction
Amber can be built with Intel oneAPI compilers. This is for advanced users,
and they should be aware that as of Amber 24 we do not expect substantial
performance gains. The target hardware should be manufactured by Intel;
problems on
AMD hardware
have been reported. In addition, there are several other known issues.
For context, the Intel classic compilers have been deprecated by Intel;
that is, as of the Amber 24 release Intel classic compilers are not available
through the normal Intel release mechanism although old versions can probably
be obtained. The next section presents instructions and the last section lists
the known issues.
General instructions
Install oneAPI: Users that do not manage their computer resources may
already have access to oneAPI compilers (see
this FAQ
for details).
To check whether you have oneAPI compilers, whose names are icx,
icpx, and ifx, for the C, C++, and Fortran compilers,
respectively, run the following command in a terminal:
ifx -v
If you do not get a response containing the word "version" then install the
compilers. You can download them from the Intel website; web search oneAPI,
which links to
this in 2024
.
Check CMake version: Amber now builds with the CMake program, which
you can get from
cmake.org/download/. For oneAPI
compilers you will need at least version 3.20.5.
To check whether you have it installed and in your PATH,
run the following command:
cmake --version
You should get a response containing the word "version".
Verify that the version is sufficient since this is a known
gotcha
.
Install Amber using -DCOMPILER=INTELLLVM:
Now you are ready to proceed with the installation instructions in the Amber
manual. Briefly, go to the amber24_src/build folder, and edit the
run_cmake script; in the Linux section change the
-DCOMPILER=GNU to -DCOMPILER=INTELLLVM ;
note that ONEAPI is an Amber alias for INTELLLVM, so this also works:
-DCOMPILER=ONEAPI . Then run the modified run_cmake.
Next inspect the CMake output to verify that IntelLLVM compilers are selected,
and then run make install to build Amber. Once Amber is installed,
you should continue by going to the installation directory chosen in the
run_cmake script, sourcing the amber.sh script, and typing
make test.serial. There will be quite a few possible failures in
these test results. We have noticed some that are potentially
concerning
.
oneAPI Known Issues
oneAPI Known Issues
CMake version gotcha
CMake support for Intel oneAPI was finalized in version 3.20.5.
Specifying the compiler INTELLLVM with earlier CMake versions has caused
the CLANG compiler to be detected and used. This can lead to various outcomes
including cryptic compiler errors when building Amber.
LEaP build failure on AMD hardware
This message, which is due to using the compiler option -xHost, prevents
utilMakeHelp from creating LEaP's help text files:
Please verify that both the operating system and the processor support Intel(R) X87, CMOV, MMX, SSE,
SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, MOVBE, POPCNT, AVX, F16C, FMA, BMI, LZCNT, AVX2, ADX and SHSTK instructions.
On some Intel hardware high optimization levels produce an unusable pmemd
On an Intel Xeon CPU Max 9470 (Sapphire Rapids), pmemd built with version
2023.2.3 and compiler options -O3 -xHost produces errors on all the Amber tests.
The Program error messages are
forrtl: severe (154): array index out of bounds
A workaround is to build with compiler options -O2 -xHost.
Later versions, such as 2024.1.0, do not have this problem.
Not yet compatible with CUDA
Intel oneAPI is not yet compatible with CUDA. The build error message is
140 | #error -- unsupported clang version! clang version must be less than 15 and greater than 3.2
A SYCL port of pmemd.cuda is available.
Concerning test failures
make test.serial produces a number of possible failures.
Although many of them only involve numeric
differences in trailing digits, some include small changes
in the NSTEP=1 energies; see for example test/dhfr/mdout.dhfr.dif.
These are potentially concerning. We recommend that users benchmark their
simulations with both GNU and oneAPI compilers for validation and performance.
|