C2 THPC
The following document will briefly detail how to consume modules and software built on and for the compute2 platform. There are currently two primary approaches:
SLURM
Open OnDemand
Open OnDemand is the RIS preferred graphical frontend to interacting with the compute2 SLURM cluster. Through it, interactive and bash SLURM jobs can be submitted either through selecting and configuring a pre-defined application or simply running custom code via the Terminal. Such jobs could run within the standard C2-THPC container or directly on the host(s).
This is the current RIS preferred method for starting interactive jobs for most common users.
SLURM
When using SLURM you are presented with two options.
Running the software bare metal, directly on the host, using
sbatchorsrunconsidered the most performant option
the RIS default and recommended approach whenever possible
Running the software within a “docker” container via
pyxiswithin ansbatchorsrunjobnegligible performance penalty
flexible and powerful allowing remapping of bind mounts like in compute1
only officially supported image is the RockyLinux based C2-THPC images here and any derivatives
images updated to RockyLinux 9.x along with hosts
users are requested to use C2-THPC as their base when building new Docker images
Bare Metal
Connect to a compute2 login node
ssh c2-login-001.ris.wustl.eduLaunch an interactive SLURM job directly on a host.
srun \ --nodes=1 \ --ntasks=1 \ --cpus-per-task=8 \ --mem=16GB \ --partition=general \ --pty /bin/bashLoad the RIS domain module.
ml risReview newly available software, loading all that is required
ml av ml <app1> <app2> <app3>Unsure where to find a software/module? Try
module spider!ml spider <app>See what software/modules are loaded. Slurm is loaded by default.
ml
Container
Connect to a compute2 login node
ssh c2-login-001.ris.wustl.eduLaunch an interactive SLURM job that will land on a host and then start a container.
# Define mount points to pass into the container # $HOME and the workdir are added by default THPC_CONTAINER_MOUNTS='/cm:/cm,/opt/thpc:/opt/thpc,/storage2/fs1:/storage2/fs1' RIS_STORAGE_MOUNTS='/storage2/fs1:/storage2/fs1,/scratch2/fs1:/scratch2/fs1,/storage1/fs1:/storage1/fs1' SYSTEM_LMOD_MOUNTS='/etc/profile.d:/etc/profile.d,/etc/sysconfig/modules:/etc/sysconfig/modules' CONTAINER_MOUNTS="${THPC_CONTAINER_MOUNTS},${RIS_STORAGE_MOUNTS},${SYSTEM_LMOD_MOUNTS}" srun \ --container-image=ghcr.io#washu-it-ris/ris-thpc:rocky9.2 \ --container-mounts=${CONTAINER_MOUNTS} \ --nodes=1 \ --ntasks=1 \ --cpus-per-task=8 \ --mem=16GB \ --partition=general \ --pty /bin/bashThere are a few “gotchas” when using a container
You have to define all the mounts you wish to see in the container. Just like compute1.
The syntax for the container image is different than on compute1
ghcr.io/washu-it-ris/ris-thpc:rocky9.2 => ghcr.io#washu-it-ris/ris-thpc:rocky9.2note the change of the first
/into a#
slurmcommands are currently not working inside these jobs - WIPsinfo,srun,scontrol, etc
This is the only container that RIS directly supports for C2 at this time.
Load the RIS domain module.
ml risReview newly available software, loading all that is required
ml av ml <app1> <app2> <app3>Unsure where to find a software/module? Try
module spider!ml spider <app>
The spider command will only work for applications that are part of a environment when it is loaded.
E.g. Modules available in the ris environment will only show up once it has been loaded.
module load risSee what software/modules are loaded. Slurm is loaded by default.
ml