Installing Perturbo can be complicated due to the fact that it depends on other packages, such as Quantum Espresso, HDF5, LAPACK. Docker image allows one to pull the Perturbo image and use it without having to compile the code. Read more about Docker here.


  1. Download and install Docker on your computer, it is compatible with Linux, Windows, and MacOS.
  2. Launch the application on your computer and log in.
  3. Pull the Perturbo image from the Docker repository. Note that containers can take up a significant amount of memory. We recommend to the Intel compiler version (~5.6 GB) for the case of x86 architecture (Windows and Linux computers almost always, for example) and GCC version (~650 MB) for the case of ARM (Apple Silicon M1/M2, for instance):
     docker pull perturbo/perturbo:ifort_mpi


     docker pull perturbo/perturbo:gcc_openmp

    Other compilers are available and can be accessed by the corresponding tag (see Perturbo docker page):

    docker pull perturbo/perturbo:tag
  4. Once the Perturbo image is downloaded, run the Docker:
     docker run -v name_of_your_work_folder:/home/user/run/name_of_your_work_folder_in_container --user 500 -it --rm --name perturbo perturbo/perturbo:tag

    This command has the following arguments:

    1. -v means volumes. To connect a folder on your primary OS to a folder inside the container, specify the name of the folder on your computer, and after the colon, what the same volume inside the container will be called. In this case, the changes that will happen to the volume inside the container will be reflected in your OS and vice versa. This allows you to not only transfer input files to the container, but also to save all outputfiles after the container is finished and the container itself is deleted.
    2. --user 500 - by default, the container is started via root, which gives a very wide range of possibilities for using the container. Often clusters (Perlmutter, for example) forbid this login because of its danger. Therefore, it is recommended to log in via user. Therefore, it is recommended to log in via user. This user is preregistered in the container.
    3. -it - interactive launch of the container, so that we can go inside and run some calculations there. Without this command, the container would start and close immediately, since no execution is defined in it.
    4. --rm - deletes the container after its use is finished. Made to save memory. If it is important for you to save the container itself (for example, if you have installed any packages there), this option should be removed, and the container should be started using docker start in the future. Docs
    5. --name - the name that the container will receive. During run (and, if the container is not deleted, during storage) it can be referred to by this name.

If you want to create your own Docker image, you can go to our Github where you will find Docker files and all the information you need.