Frontier (OLCF)#

frontier is a system at ORNL.

Frontier does not support container execution at this time. glotzerlab-software instead provides a build script and a module environment to create an equivalent software stack.

First, clone the glotzerlab-software repository:

$ git clone https://github.com/glotzerlab/software
$ cd software

If you already have a clone, update it:

$ cd software
$ git pull origin trunk

You should install your software in NFS under /ccs/proj/. For example, set the installation root directory to /ccs/proj/{your-project}/software/frontier/${USER}.

Build the software environment and install it into the root:

$ script/frontier/install.sh /ccs/proj/{your-project}/software/frontier/${USER}
... compiling software will take several minutes ...

Activate the environment with:

$ source /ccs/proj/{your-project}/software/frontier/${USER}/environment.sh

The environment is a python3 venv. You may extend it with additional python packages using python3 -m pip install:

$ source /ccs/proj/{your-project}/software/frontier/${USER}/environment.sh
$ python3 -m pip install package

Importing Python packages from this environment will be very slow with large node count jobs. To improve performance, generate a tar file with the environment and store it on Orion (repeat this step after you update the environment or install packages with pip):

$ /ccs/proj/{your-project}/software/frontier/${USER}/generate-tar-cache.sh \
  ${MEMBERWORK}/{your-project}/software.tar

Use the following commands in your job scripts (or interactively with salloc) to load the cache into NVME and execute software from there:

#SBATCH -C nvme

export GLOTZERLAB_SOFTWARE_ROOT=/mnt/bb/${USER}/software
srun --ntasks-per-node 1 mkdir ${GLOTZERLAB_SOFTWARE_ROOT}
srun --ntasks-per-node 1 tar --directory ${GLOTZERLAB_SOFTWARE_ROOT} -xpf \
  ${MEMBERWORK}/{your-project}/software.tar
source ${GLOTZERLAB_SOFTWARE_ROOT}/variables.sh

srun {srun options} command arguments