Amber masthead
Filler image AmberTools24 Amber24 Manuals Tutorials Force Fields Contacts History
Filler image

Useful links:

Amber Home
Download Amber
Installation
Amber Citations
GPU Support
Updates
Mailing Lists
For Educators
File Formats
Contributors
Workshops

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.


"How's that for maxed out?"

Last modified: Oct 8, 2024