Rui's Blog
Search
⌃K

Lecture 1: Course Overview

Course Description

This grad-level course seeks to:
  1. 1.
    Provide an overview of various advanced computing software and hardware solutions
  2. 2.
    Introduce CUDA for parallel computing on the Graphics Processing Unit (GPU)
  3. 3.
    Introduce the OpenMP solution to enabling parallelism across multiple CPU cores
  4. 4.
    Introduce the Message Passing Interface (MPI) standard for leveraging parallelism on a CPU cluster
  5. 5.
    Promote an understanding instrumental in deciding what parallel computing model is suitable for which problems.

Linux "module" utility

Linux module usage
[[email protected] ~]$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
...
[[email protected] ~]$ module load gcc/6.4.0
[[email protected] ~]$ gcc --version
gcc (GCC) 6.4.0
...
[[email protected] ~]$ nvcc main.cu -o cudaprogram
bash: nvcc: command not found
[[email protected] ~]$ module avail cuda
--------------/usr/local/share/modulefiles ---------------------
cuda/0_user/cuda cuda/7.5 cuda/8-rc cuda/9 cuda/9.1
cuda/7 cuda/8 cuda/8.0 cuda/9.0
[[email protected] ~]$ module load cuda/9
[[email protected] ~]$ nvcc main.cu -o cudaprogram
[[email protected] ~]$ module list
Currently Loaded Modulefiles:
1) gcc/6.4.0 2) gcc/0_cuda/6.4.0 3) cuda/9
[[email protected] ~]$ module unload cuda gcc
bash: nvcc: command not found

The Euler cluster

Slurm (Simple Linux Utility for Resource Management)

Slurm is used on Euler for job management and scheduling.
Slurm usage (SBATCH flags documentation) can be found here.
Example of a Slurm-specific batch script
#!/usr/bin/env bash # intepret file as bash script
#SBATCH --job-name=HelloScript
#SBATCH-p wacc # a partition is a logical chunk of cluster
#SBATCH --time=0-00:00:10
#SBATCH --output=“hello_output-%j.txt”
#SBATCH --ntasks=1 --cpus-per-task=1 # simple jobs: one core suffices
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=8 # for mpi
#SBATCH --cpus-per-task=4 # multithreaded jobs
#SBATCH --gres=gpu:1 # gres: Generic RESource
# --gres=type[:model]:N
# e.g., gpu:gtx1080:3or infiniband:1
#SBATCH --constraint=haswell
# regular bash script
cd $SLURM_SUBMIT_DIR # directory where the script is submitted from
name_str=“World”
echo “Hello, $name_str!
sbatch (Slurm batch) usage
[[email protected]~]$ sbatch hello_slurm.sh # submit a scheduling script to Slurm
Submitted batch job 1975385
[[email protected]~]$ cat hello_output-1975385.txt
Hello, World!