Learn about the technologies used in scientific computing
Learn about the virtual cluster that we have created for this course.
Learn 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.
What is Unix?
Learn about Linux file and folder operations.
How to display the contents of a file in Linux?
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?
Learn about the scientific computing software stacks.
Learn about the software modules.
Learn how to schedule jobs on scientific cluster computers.
Learn 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 introduction and history.
Learn about Slurm commands.
How to submit a Slurm job, hands-on.
Learn how to submit a Slurm distributed job.
Learn 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
Learn 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
Introduction 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.
Learn 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.
Learn 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.
Learn how to do multi precision computation with Boost
Learn how to do matrix multiplication with MKL.
Learn hands-on LAPACK with DGESV system of linear equations A * X = B for GE matrices.
Conclusion and further readings
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 learnScientific 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 exampleIntroduction 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 dependenciesOpenMP 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.RequirementsIt is a self-learning course with all Linux environtments provided.Foundations of C/C++
OutcomeHands-on learning capability of Scientific computingHPC system's basic componentsHPC software stackHPC job schedulers and batch systems (Slurm and PBS Pro)Introduction to parallel programming concepts: Open MP and MPI
Please enroll to view the course forum.
Please describe about the report short and clearly.
Share course with your friends
Cookies and similar technologies are used on our sites to personalise content and ads. You can find further details and change your personal settings below. By clicking OK, or by clicking any content on our sites, you agree to the use of these cookies and similar technologies.
When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.