High-throughput data needs high-throughput analysis
A commonality is an increase in the number of FLOPs, or “Floating point operations”.
HPCs are designed to facilitate such scaling, by maximizing FLOPS (FLOPs per Second)
Image from https://ourworldindata.org/grapher/supercomputer-power-flops?time=earliest..2024
When you use an HPC, you are sharing a huge computer with lots of other people
LSU-HPC
LONI (Louisiana Optical Network Infrastructure)
All researchers in the US also have access to ACCESS, and NSF-run HPC resource.
Through an SSH connection in your terminal or through a new web-based interface
Connecting through the terminal is ideal for large, production-scale work, but the web interface is fantastic for a lot of prototyping (and maybe more, depending on your needs)
Terminal: through your terminal (mac/linux) or GitBash (Windows), you can access your LSU HPC account with: ssh <username>@mike.hpc.lsu.edu. (Needs 2FA setup).
Web-based interface: https://ondemand.mike.hpc.lsu.edu
Logging in gets you onto a “login node” or a “head node”
You can think of this as a traffic controller – no ability to do any “real” jobs here, but you can ask for compute access
Demo: Terminal and Web-based
Once you are logged in, you need to request access to a “compute node”
Once you are in a login node, you can now run commands from the terminal or from the web interface to run code
Working with R, python, matlab, or paraview through the web-interface is straightforward, but can’t do everything through these…
You can also open the terminal through the web-browser (but some limitations)
ssh-keygen on the HPC terminal; copy pubkey into gitlabAccessing the HPC through the terminal opens up more options
Upon logging in, you will be on the head node
We need to request access to a compute node to do any work:
salloc -A <name_of_allocation> -t H:MM:SS -p <queue> -N <nodes> -n <cores>
e.g. salloc -A hpc_reprores -t 1:00:00 -p single -N 1 -n 16
Once on a compute node, you can load specific modules to achieve tasks
e.g. Bowtie, SamTools, RevBayes
Once a module is loaded, you can use it directly from the command line as you would on your on terminal.
LSU HPC uses a job management program called SLURM (“Simple Linux Utility for Resource Management”) to manage its tasks
SLURM intelligently decides how to divide up available computing power among jobs, in the order they were submitted (or according to other priorities)
Users can submit a bash script that contains a list of tasks:
#!/bin/bash
#SBATCH -N 1 # request one node
#SBATCH -t 2:00:00 # request two hours
#SBATCH -p single # in single partition (queue)
#SBATCH -A your_allocation_name
#SBATCH -o slurm-%j.out-%N # optional, name of the stdout, using the job number (%j) and the hostname of the node (%N)
#SBATCH -e slurm-%j.err-%N # optional, name of the stderr, using job and hostname values
# below are job commands
date
# Set some handy environment variables.
export HOME_DIR=/home/$USER/myjob
export WORK_DIR=/work/$USER/myjob
# Make sure the WORK_DIR exists:
mkdir -p $WORK_DIR
# Copy files, jump to WORK_DIR, and execute a program called "mydemo"
cp $HOME_DIR/mydemo $WORK_DIR
cd $WORK_DIR
./mydemo
# Mark the time it finishes.
date
# exit the job
exit 0In computing, a minimal reproducible example (abbreviated MRE) is a collection of source code and other data files that allow a bug or problem to be demonstrated and reproduced. The important feature of a minimal reproducible example is that it is as small and as simple as possible, such that it is just sufficient to demonstrate the problem, but without any additional complexity or dependencies that will make resolution harder. Furthermore, it would probably expose the problem with as low as possible efforts and runtime to allow testing a new software version as efficiently as possible for the problem.