Apollo cluster

Apollo cluster

Hardware information

The apollo cluster runs Rocky Linux 9 and comprises compute nodes organized in a 2-level hierarchy of partitions. The lustre storage filesystem includes 1 PB of shared space.

Consult detailed information about the hardware specifications of each node.

Consult the real-time dashboard with the current utilization of the cluster. Review the FAQ with the most common do's/don'ts, questions, and errors.

Partition L1

Partition L2

# Nodes

CPU model

# CPU cores per node

GPUs

RAM per node

Local /tmp per node

Partition L1

Partition L2

# Nodes

CPU model

# CPU cores per node

GPUs

RAM per node

Local /tmp per node

cpu

cpu-small

17

Intel / AMD

24 - 64

-

128 - 786 GB

2 TB SSD

gpu

gpu-p100

1

Intel Xeon

32

2x NVIDIA P100 12 GB

384 GB

2 TB SSD

Total resources

540 CPU cores

2 GPUs

5 TB RAM

 

2 CPUs and 8 GB of RAM are reserved on each node for the operating system and they cannot be allocated to users in Slurm.

Software information

All nodes provide basic software provided by default in Rocky 9, including GCC 11, Java 11 (openjdk), and Python 3.9

For Python, we recommend creating virtual environments for your projects. These enable you to keep the correct versions of Python packages you install using pip. Always use pip install --user to install the packages in your home directory.

Additional software and versions are provided via modules. Click on the software name for instructions. Use the command "module avail" to see all modules. Use the command "module load modulename" to load a specific module. Please read the documentation on how to use modules to load your software version.

Software

Versions

GPU-accelerated

Software

Versions

GPU-accelerated

Anaconda3

2023.09-0

No

Apptainer

1.2.4

No

AWS CLI

2.15.48

No

AutoDock-Vina

1.2.7

 

bcftools

1.18, 1.21

No

Bedtools

2.31.0

No

Bioperl

1.7.8

No

Boost

1.83.0

No

Bowtie2

2.5.2

No

BWA

0.7.17-r1198

No

Cell Ranger

6.0.2, 7.2.0, 8.0.1, 9.0.1, 10.1.0

No

Cell Ranger ARC

2.0.2

No

Cell Ranger ATAC

2.1.0

No

Cmake

3.27.7

No

Cutadapt

4.9

No

Easybuild

4.8.2

No

fastp

0.23.4

No

FastQC

0.12.1

No

GCC

9.5.0, 10.5.0

No

GCC Toolset

12, 13

No

GffCompare

0.12.6

No

Go

1.21.4

No

GROMACS

2023.3

Yes

GSL

2.7.1

No

HDF5

1.14.3

No

HISAT

2.2.1

No

htslib

1.18, 1.21

No

Intel oneAPI

2024.0.0

No

IQ-TREE

2.2.2.6

No

JAGS

4.3.2

No

Jellyfish

2.3.1

No

Julia

1.9.2

No

Matlab

R2024a

Some functions

Miniconda3

23.9.0

No

Miniforge3

23.3.1

No

MultiQC

1.17

No

Muscle

5.1.0

No

ncbi-blast

2.15.0

No

Nextflow

23.10.0

No

Open Babel

3.1.1

No

OpenCV

4.8.1

No

OpenJDK

17.0.2, 21.0.1

No

OpenMPI

4.1.6

No

OrthoFinder

2.5.4

No

PAML

4.10.7

No

Picard

3.1.0

No

Plink

1.90

No

PSI4

1.8.2

No

Python

3.11.6

No

QIIME2

2023.9

No

R

4.2.1, 4.4.1

Some packages

RAxML

8.2.13

No

Sage

10.2

No

Salmon

1.10.1

No

Samtools

1.18, 1.21

No

SAS

9.4

No

Singularity

4.0.1

No

Seven Bridges

0.25.2

No

SPAdes

3.15.5

No

Spyder

5.5.1

No

SRA Toolkit

3.0.7

No

Stacks

2.56

No

STAR

2.7.11a

No

StringTie

2.2.1

No

Subread

2.0.6

No

szip

2.1.1

No

TrimGalore

0.6.10

No

Trinity RNA-Seq

2.15.1

No

VCFtools

0.1.16-20

No

Zlib

1.3

No

Usage

  • The use of this system is subject to the VCU Computer and Network Resource Use Policy, VCU Information Security Policy, and any other applicable Federal, State and University laws, policies, standards and regulations. Improper use of this system is strictly prohibited. Violators may be subject to disciplinary action under University policies or criminal prosecution under the law.

  • Do not hog or otherwise abuse resources. Remember these are shared resources. Write your jobs to be aware of CPU, RAM, and GPU usage, and usage of world-writable directories like /tmp, and leave room for other users even when usage is low. We do track resource usage and will contact you if we believe you are causing issues for others.

  • Do not run heavy computation on the login nodes. Doing so negatively impacts everyone's ability to interact with the cluster.

Data classification definitions

Apollo may contain Category I data according to the VCU Data Classification Standard such as those governed by FERPA, HIPAA, CUI, or any other federal, state, or local laws. Athena may contain only Category II and Category III data.

  • Category III: non-propriety data.

  • Category II: propriety data, de-identified research information.

  • Category I: sensitive data protected by federal and state law, except ITAR and export-controlled. 

Requesting access

All VCU faculty, staff, and students conducting research are authorized to have accounts on the cluster. Users may request an account using the account creation form.

Accessing the cluster

After submitting the account creation form, the HPRC staff will get back to you with the confirmation. Note that all access requires the use of the VCU VPN including when on campus. You should connect via SSH using your VCU eID and password on the command line prompt on Windows, Mac, or Linux. You can SSH into apollo by running:

ssh yourvcueid@apollo.hprc.vcu.edu

If you wish you can set up a passwordless access using SSH keys. While most operations in a cluster are based on the command line, there is also an option to using X11 Forwarding to Run Remote Graphical Applications.

Transferring files to/from the cluster

We recommend using FileZilla, a free FTP client to transfer your files from and to the apollo cluster. Review this page for details on transferring files to/from the cluster. All nodes in the cluster share the home directory. Therefore, you do not need to copy files to individual compute nodes.

Using Open OnDemand

Open OnDemand is a web portal to the Apollo cluster providing a graphical user interface for the most commonly used applications including Matlab, RStudio, Jupyter lab, VS Code. Sessions are limited to a maximum of 7 days because Open OnDemand is intended for interactive jobs.  Should you need to run any code for 7+ days then use the sbatch option to submit a job to the cluster. It is important to close Open OnDemand sessions when you finish your interactive session, so resources can be released and used by other users.

Using Slurm

Slurm (the Simple Linux Utility for Resource Management) is a job scheduler and resource manager for HPC systems. It ensures limited computing resources such as CPUs, GPUs, and memory are allocated fairly, and allows users to schedule jobs to run when the resources they require are available.

Terminology and Basics

Jobs (not to be confused with shell jobs, which are processes run and managed under a shell) are major compute workloads to be scheduled and completed as submitted, typically via sbatch. A job can be a single program, a sequence of programs, many programs running simultaneously, or multiple sequences of one or more programs, with programs running either serially or in parallel. Since jobs are typically run as scripts, you can do anything your script interpreter and the system Slurm limits allow. Ideally, a job details a whole workflow from start to finish with all of its dependencies. A good strategy for job composition is to decide how the output of your workflow should look, given the inputs, and write a submission script that makes it happen. Think of it as a "recipe" for your output.

Tasks (not to be confused with CPU tasks, processes, programs, or threads) are parallel instances of the same program, typically launched using srun. This is not the same thing as simply having multiple programs running simultaneously. The difference is tasks are "copies" of the same program. An MPI program is the best example of something that makes use of tasks, though anything can be run as multiple tasks, regardless of each spawned process's "awareness" of the others. If you don't do any parallel programming, you may have no need for tasks (your job will be considered a single task, regardless of how many processes it spawns).