Supercomputers and HPC clusters
  • Why Get this Course?
  • Instructor
  • Practice Shell Commands with Interactive Shell
  • Course Organisation
  • Introduction to HPC Systems
  • A Little bit of Supercomputing history
  • Examples of Supercomputing Facilities
  • Fastest Supercomputer in the World Demo!
  • Introduction to HPC Systems
  • Benefits of Using HPC Systems
Components of a HPC System
  • What are the HPC Nodes Types?
  • HPC Cluster Components
  • HPC Login Node(s)
  • HPC Master Node(s)
  • HPC Storage Node(s)
  • HPC Compute Nodes
  • Creating a HPC System with VMWare
HPC Access and Data Transfer
  • Access to HPC
  • Data Transfer
HPC Software Modules
  • HPC Software Modules
  • HPC Software Modules Demonstration
  • HPC Software List
HPC Jobs and Scheduling Software
  • What is a HPC Job?
  • HPC Job Schedulers
  • HPC Job Scheduling Software (Slurm and PBS)
SLURM - Workload Manager
  • Introduction to Slurm
  • What are the Most Common Slurm Commands?
  • A List of Slurm Commands
  • Useful Slurm Commands
  • Slurm Entities and Partitions
  • Example of a Simple Slurm Job
  • Slurm Job Submission Demonstration
  • Slurm distributed MPI and GPU jobs
  • Slurm Multi-threaded OpenMP Jobs
  • Slurm Interactive Jobs
  • Slurm Array Jobs
  • Slurm job dependencies
  • Slurm Commands Test
PBS - Portable Batch System
  • Introduction to PBS
  • PBS Command Examples
  • PBS basic commands
  • PBS command: qsub
  • PBS command: qstat
  • PBS command: qdel
  • PBS command: qalter
  • PBS job states
  • PBS Job Variables
  • PBS Job Script Example
  • PBS Interactive Jobs
  • PBS Arrays
Parallel Programming with OpenMP
  • Introduction to OpenMP
  • OpenMP Components (Directives, Routines and Variables)
  • OpenMP Clauses
  • OpenMP - Worksharing Constructs
  • OpenMP- Hello world! Code Example
  • OpenMP Hello world! Demonstration
  • OpenMP - Reduction and Parallel `for-loop`
  • OpenMP - Section Parallelization Example
  • OpenMP Vector Add Example
Parallel and Distributed Programming with MPI (Message Passing Interface)
  • Introduction to MPI
  • MPI Programm Stucture
  • MPI - Hello World! Example
  • MPI Hello World! Demonstration
  • MPI Send/ Receive
Data-Parallel Programming with GPUs (Graphics Processing Units)
  • GPU types (Nvidia)
  • Introduction to CUDA
  • Introduction to GP GPU
  • What is CUDA?
  • Install CUDA toolkit and run CUDA codes (Windows)
  • GPGPU Schema
  • GPGPU software layer
  • CUDA device, thread, blocks and grids
  • CUDA grid organisation and memory hierarchy
  • CUDA - Hello World! Example Code
  • CUDA "Hello World!" code example
  • CUDA kernel function explained
  • CUDA variable addtion on the device (1 block and 1 thread)
  • CUDA vector addtion (using N blocks)
  • CUDA variable addtion (variable blocks and threads)
  • CUDA vector addition (using N threads)
  • CUDA Vector Addition Demonstration
CUDA Programming (Easy to understand, high level concepts)
  • CUDA - High Level concepts
  • CUDA Programming Model
  • CUDA Parallel For-loop
  • CUDA Threds, Blocks and Grids
  • CUDA Memory Model
  • CUDA Synchronization
  • Example: CUDA Square an Aarray
AWS HPC Cluster - Deployment and Run Codes