Summary

To set up, run, and produce reproducible results on a supercomputer (actually, any machine) you should be aware of several fundamental aspects. These things will be summarized in the following, briefly.

Understanding the Supercomputer and its environment

• Get an overview of the supercomputer's architecture (number of nodes, number of CPUs per node, memory per node, type of CPUs, accelerators, walltimes, homogenous/inhomogenous node architecture)
• Which compilers and libraries are available on the computer systems and which ones might be appropriate to compile and link FHI-aims?
• How does the queuing (job submission) system work?

Compiling an optimized FHI-aims executable

• Find out, which libraries and compilers are available, including their versions. Unfortunately, some compiler and library combinations can contain bugs that are outside the control of the FHI-aims code itself. Check (at FHI-aims' wiki, located at https://aims-git.rz-berlin.mpg.de/aims/FHIaims/-/wikis/home) if issues are already known for some specific library/compiler versions you might be trying to use.
• Are the environments and available libraries the same during compiling the executable and running the executable? (The executable should be always compiled for the set of instructions available during execution.)
• Use compiler optimization flags (e.g. -O3 or AVX instruction sets).

• Run the FHI-aims regression tests for your new executable on your supercomputer. You can find them in the FHIaims/regression_tests/ folder.