Scientific Computing Essentials
Hands-on course on scientific computing utilizing High Performance Computing (HPC). The goal main of this course is to introduce you with the HPC systems and its software stack: Linux, Slurm, PBS, C/C++, OpenMPI, MPI and CUDA. Revised for 2021.
- 200 Enrolled
- Intermediate
- Created by Scientific Programming Team
- Last updated Fri, 20-Nov-2020
-
- INTRODUCTION
-
CLASSROOM RESOURCES
- Join Live! No classes sheduled yet!
- PDF version
-
CLUSTER COMPUTING
- Cluster computers Preview
- Cluster computer components
- How to access?
- Data transfer
-
HPC & SCIENTIFIC LINUX
- Unix Introduction
- File and folder commands
- Display contents of a file Preview
- Search contents of a file
- Redirection and pipes
- File system access rights
- Processes and Jobs
- Useful UNIX commands
- Compiling UNIX software packages
-
SCIENTIFIC SOFTWARE
- Scientific software stack
- Software modules
- Scheduling jobs
-
PBS- PORTABLE BATCH SYSTEM
- Introduction to PBS
- PBS basic commads
- PBS job submission Preview
- PBS Statistics Preview
- PBS jobs management
- PBS job states
- PBS variables
- PBS job arrays
-
SLURM - WORKLOAD MANAGER
- Introduction to Slurm
- Slurm commands
- Slurm job submission Preview
- Slurm array job
-
C/C++ PROGRAMMING FOUNDATION
- Variables, Literals and Constants
- Data Types
- Input and Output Preview
- Operators
- Comments
- Conditions
- Switch
- Loops
- Goto
- Functions
- Recursion
- Arrays
- Strings
- Structures
- Pointers
-
C/C++ PROGRAMMING WITH STL
- What is STL?
- Vectors
- Lists
- Map
- Queue
- Set
- Stacks
- Pair
-
C/C++ PARALLEL PROGRAMMING- OPENMP
- OpenMP
- OpenMP- Hello world! Preview
- Open MP - reduction
- OpenMP - section parallelization
-
C/C++ DISTRIBUTED PROGRAMMING - MPI
- MPI - Message Passing Interface
- MPI program structure
- MPI - hello world! Preview
- MPI send and receive
-
C/C++ ACCELERATED PROGRAMMING - GPUS AND CUDA
- GPUs - graphics processing units
- CUDA programming overview
- CUDA Threads, Blocks and Grid
- CUDA memory model
- CUDA Kernel
- CUDA Hello World!
- CUDA square an array of numbers Preview
- CUDA vector addition Preview
- CUDA matrix multiplication
-
C/C++ ADVANCED PROGRAMMING
- Boost Multiprecision Preview
- MKL - Matrix Multiplication
- LAPACK - Linear Algebra
-
CONCLUSION
- Conclusion and further readings
-
Description
This is the first ever hands-on scientific programming course that uses the High Performance Computing (HPC) systems software stack: Slurm, PBS Pro, OpenMP, MPI and CUDA. The goal main of this course is to introduce you with the HPC systems and its software stack. This course has been specially designed to enable you to utilize parallel & distributed programming and computing resources to accelerate the solution of a complex problem with the help of HPC systems and Supercomputers. You can then use your knowledge in Machine learning, Deep learning, Data Sciences, Big data and so on.
You will learn- Scientific programming in HPC clusters computers and is benefits, Supercomputing history and examples.
- Components of a High Performance Systems (HPC) cluster, Properties of Login node(s), Compute node(s), Master node(s), Storage node(s), HPC networks and so on.
- Introduction to PBS, PBS basic commands, PBS `qsub`, PBS `qstat`, PBS `qdel` command, PBS `qalter`, PBS job states, PBS variables, PBS interactive jobs, PBS arrays, PBS Matlatb example
- Introduction to Slurm, Slurm commands, A simple Slurm job, Slurm distrbuted MPI and GPU jobs, Slurm multi-threaded OpenMP jobs, Slurm interactive jobs, Slurm array jobs, Slurm job dependencies
- OpenMP basics, Open MP - clauses, worksharing constructs, OpenMP- Hello world!, reduction and parallel `for-loop`, section parallelization, vector addition, MPI - hello world! send/ receive and `ping-pong`
- Friendly guide to the GPUs - graphics processing units, GPU Programming - CUDA, CUDA - hello world and so on!
Don't forget to join our Q&A community where you can get free help anytime from other students and the instructor. This awesome course is a component of the Learn Scientific Computing project.
Scientific programming using a cluster of computers joins computational powers of the compute nodes to provide a more combined computational power. Therefore, as in the client-server model, rather than a simple client making requests of one or more servers, cluster computing utilize multiple machines to provide a more powerful computing environment perhaps through a single operating system.Requirements
- It is a self-learning course with all Linux environtments provided.
- Foundations of C/C++
Outcome
- Hands-on learning capability of Scientific computing
- HPC system's basic components
- HPC software stack
- HPC job schedulers and batch systems (Slurm and PBS Pro)
- Introduction to parallel programming concepts: Open MP and MPI
- GPU programming: CUDA
- Scientific programming in HPC clusters computers and is benefits, Supercomputing history and examples.
-
Instructor Profile
The Scientific Programming Team helps you to learn the use of scientific programming languages, such as CUDA, Julia, OpenMP, MPI, C++, Matlab, Octave, Bash, Python Sed and AWK including RegEx in processing scientific and real-world data. The teamed is formed by PhD educated instructors in the areas of Computational Sciences.
-
Student feedback
5 -
COURSE DISCORD
Scientific Computing Essentials
Hands-on course on scientific computing utilizing High Performance Computing (HPC). The goal main of this course is to introduce you with the HPC systems and its software stack: Linux, Slurm, PBS, C/C++, OpenMPI, MPI and CUDA. Revised for 2021.
$5 $25
Course includes
Already purchased? Please Login with your purchasing email and resume from dashboard!
SIMILAR COURSES
PRACTICE CONSOLE

InteractiveShell.com
By Scientific Programming School
Reviews (3)
Gives a foundation of the Slurm, PBS, OpenMPI, MPI and CUDA. Thanks!