Skip to content


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 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).

Test your FHI-aims executable

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

Benchmark your FHI-aims executable

  • Run benchmark calculations and compare their results to former, known benchmarks while considering the following points:
  • Reproduce the outcome of a simulation.
  • Compare the timings.
  • Check the scaling with the number of CPU cores and/or MPI tasks used.
  • (optional) Find the optimal runtime parameters.