Using the HPCL Cluster

The primary way of interfacing with the cluster is secure shell (SSH) via the login server ssh://hslinux.salisbury.edu. Users on Windows should use the  PuTTY tool to SSH into the login server, whereas users on Linux should use the ssh terminal command. This login server is only accessible on the Henson LAN, and is restricted to Students and Faculty granted Linux access with Henson Linux accounts. The Henson HPC cluster uses the SchedMD Slurm program to manage resources and execute programs across the cluster. It is recommended to run programs that are  Open MPI aware to perform computation across the system, using the sbatch or srun utility supplied by Slurm. Faculty and students (with faculty permission) may request access to both the Linux system and the Slurm Scheduler by submitting a ticket.

MPI Configuration

Both OpenMPI v3 and MPICH v3 are supported through environment modules. By running the module avail command, you will get the following output listing all available environment modules:

---------------------------------------------------- /usr/share/Modules/modulefiles -----------------------------------------------------

dot module-git module-info modules null use.own

----------------------------------------------------------- /etc/modulefiles ------------------------------------------------------------

mpi/mpich-3.0-x86_64 mpi/mpich-3.2-x86_64 mpi/mpich-x86_64 mpi/openmpi3-x86_64 mpi/openmpi-x86_64

To load a module, the command is module load modulename, for example to load OpenMPI into your environment run module load mpi/openmpi3-x86_64. More info on the module command is available here. A comprehensive tutorial and book recommendation list on using MPI is available courtesy of Wes Kendall

Python users can install the  mpi4py  package by loading the module corresponding to the desired MPI implementation and then running  pip2 install mpi4py --user  for Python 2.7 or  pip3 install mpi4py --user  for Python 3.6.

Cluster Scheduling

An example SLURM batch script is as follows:

#!/bin/bash
#SBATCH --job-name=myproject
#SBATCH --ntasks=30
#SBATCH --mem=2gb
#SBATCH --time=00:05:00
# Time limit in the form hh:mm:ss
#SBATCH --output=out/%j.log

module load mpi/openmpi3-x86_64

srun python3 ~/Projects/myproject/myproject.py

This script is designed to run an MPI program written with mpi4py. It has a maximum runtime of 5 minutes, a name of "myproject," a maximum memory usage node of 2GB, and outputs a log file to the specified out directory of the project directory. The  ntasks  parameter specifies that the world size for the MPI task will be 30, however the scheduler is free to choose which CPU cores that the task maps to.

This script runs a Python 3 MPI program located in the   Projects/myproject/myproject.py  subdirectory of the User's home directory. The   --ntasks=30  directive specifies that we want 30 instances of our programming without regard to how those tasks are distributed.

By changing the   ntasks  directive to the following, SLURM will allocate 12 MPI ranks (which are 1:1 mapped to CPU cores except in the case of oversubscription) each to 4 compute nodes, for a total of 48 cores.

#SBATCH --nodes=4
#SBATCH --ntasks-per-node=12

The HPC cluster can also be used to run multithreaded applications that are not cluster aware. Allocations for standard multithreaded applications should use the --cpus-per-task=N and the --ntasks flags to specify to the scheduler that each executable (task) will use N cores.