How to Run AutoPot on a Cluster?

To run AutoPot on a cluster, additional configuration is necessary. First, the compute nodes need to access the database through a TCP connection.

This can be done by adding the host of the ZEO server in motoko.yaml for each task:

select:
  host: zeo://cluster_name:8010

The number at the end is the port, which needs to be different for every task.

Further, specify a submission manager, such as Slurm, and add options. This can be done at the workflow level by appending the following to motoko.yaml:

generator: slurmCoat

slurm_options:
  - nodes=1
  - ntasks=1
  - cpus-per-task=1

A complete motoko.yaml file for cluster usage will look like this:

task_managers:
  select:
    host: zeo://cluster_name:8010

  md_select:
    host: zeo://cluster_name:8011

  eam:
    host: zeo://cluster_name:8012

  vasp:
    host: zeo://cluster_name:8013

  train:
    host: zeo://cluster_name:8014

aliases:
  sp_calc: vasp

orchestrator: orchestrator.main

generator: slurmCoat

slurm_options:
  - nodes=1
  - ntasks=1
  - cpus-per-task=1

In many situations, different Slurm setups are needed for different tasks. For example, MD simulations may run on one core, but VASP calculations may run on a whole node. This can be realized by adding slurm_options to the run parameters in the bd.yaml file corresponding to the vasp task:

study: sp_calc

job:
  cfg_fname: str
  incar_fname: str

run:
  slurm_options: list

job_space:
  incar_fname: INCAR_ase

run_params:
  slurm_options:
    - nodes=1
    - ntasks=64
    - cpus-per-task=1

Any Slurm option defined in the bd.yaml file of a task will overwrite the options defined on the workflow level.