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. in Scientific Comp Scientific Computing playgrounds 12:04 HoursWhat do you learn?
Cluster Computing
4 LessonsLearn about the organization of HPC cluster computers.
Learn about the HPC cluster components.
Learn how to access a HPC cluster login node.
Learn how to transfer data to HPC.
Linux Foundation for Scientific Computing
9 LessonsWhat is Unix?
Learn about Linux file and folder operations.
How to display the contents of a file in Linux?
Linux commands
Learn about the Linux redirection and pipes.
File system security access rights.
Learn about Linux processes and jobs.
A list of useful Linux/ Unix commands.
How to compile software packages in Linux?
Scientific Software
3 LessonsLearn about the scientific computing software stacks.
Learn about the software modules.
Learn how to schedule jobs on scientific cluster computers.
Portable Batch System
8 LessonsLearn about the PBS system
Learn about the PBS basic commands.
Learn how to submit a PBS job with the 'qsub' command.
Learn how to collect PBS statistics with qstat.
Learn how to use the PBS 'qdel' and 'qalter' commands.
Learn about the PBS job states, e.g., running, pending, etc.
Learn about PBS variables
Learn about the PBS job arrays
SLURM - Workload Manager
4 LessonsC/C++ Foundation
15 LessonsLearn about variables, literals, and constants in C++ .
Learn about basic data types such as int, float, char, etc. in C++ programming
Learn to use the cin object to take input from the user, and the cout object to display output to the user
Learn about the different types of operators in C++
Learn about C++ comments
Learn to create decision making statements in a C++ program.
Learn about switch statement and its working in C++ programming
Learn about the C++ for loop and its working
Learn about goto statment, how it works and why should it be avoided.
Learn about the C++ function and function expressions.
Learn about recursive function in C++
Learn to declare, initialize, and access array elements in C++ programming.
Learn to handle strings in C++. You'll learn to declare them, initialize them and use them for various input/output operations.
Learn about structures in C++ programming; what is it, how to define it and use it in your program
Pointers
C++ STL
8 LessonsLearn about the STL basics.
Learn about STL C++.
Learn about the C++ STL Lists.
Learn about C++ Map.
Learn about STL queues
Learn about C++ STL sets
Learn about C++ STL stacks
Learn about the Pair in C++ Standard Template Library
C++ OpenMP
4 LessonsIntroduction to OpenMP
Hands-on hello world! program with OpenMP.
Learn about Open MP - reduction and parallel for-loop.
Learn how to do OpenMP section parallelization.
C++ MPI (Message Passing Interface)
4 LessonsLearn about the MPI - Message Passing Interface and its history.
Learn about the MPI program structure.
Hands-on MPI - hello world!
Learn how the MPI send and receive work.
C++ CUDA
9 LessonsLearn about the history of GPUs.
Introduction to CUDA Programming.
Learn about CUDA threads, blocks and Grid.
Learn about the CUDA memory model.
Learn about CUDA kernels.
Do the first program in CUDA: Hello World!
Learn how to square a number set in GPU.
Learn how to do CUDA vector addition.
Learn how to do CUDA matrix multiplication.
C++ Boost Library
2 LessonsLearn how to do multi precision computation with Boost
C++ Scientific Computing
2 LessonsLearn how to do matrix multiplication with MKL.
Learn hands-on LAPACK with DGESV system of linear equations A * X = B for GE matrices.
Conclusion
1 LessonsConclusion and further readings
About this course
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!
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.
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.
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
Prerequisites
Class rating
Reviews (2)

Class instructor

Scientific Programming School
Experts in Scientific ComputingForum
Please enroll to view the course forum.

Introduction
2 LessonsLearn about the technologies used in scientific computing
Learn about the virtual cluster that we have created for this course.