Appendix F Split large cluster allocation to multiple aims instances

Specific tasks need to perform many small jobs rather than a few big ones. The job submission of such tasks on large compute facilities, which typically require at least a few hundreds MPI processes, can be cumbersome. FHI-aims allows for running multiple instances of itself and split a global MPI communicator into smaller, independent parts. This allows for a unified approach to submit one large job and let the splitting happening in aims.

To use this feature, you need to compile the multiaims executable by compiling the multiaims target. When using CMake, this is controlled via the MULTIAIMS option. This is achieved by adding the following line to the FHI-aims CMake file,

set(MULTIAIMS ON CACHE STRING "Whether to build multiaims or regular aims")

When using Makefile, the target multi.scalapack.mpi should be used. In either case, a C compiler is mandatory in addition to the usual requirements.

The multiaims environment needs its jobs distributed in subdirectories labeled 1 to N, where N is the total number of jobs. In the main directory one additional control file multiaims.in needs to be specified. This file contains two keywords:

 

Tag: tasks_per_subjob(multiaims.in)

Usage: tasks_per_subjob value
Purpose: Specifies the number of processes working on one subtasks. Should be a divisor of total number of processes.

 

Tag: start_id(multiaims.in)

Usage: start_id value
Purpose: Specifies the first job folder to start with.