X

Practical High-Performance Computing

By Prof. Mahendra Verma   |   IIT Kanpur
Learners enrolled: 721   |  Exam registration: 84
ABOUT THE COURSE:
This course on parallel programming on scientific applications will enable the students to write parallel programs. The course will provide a overview of HPC hardware, and then move to Message Passing Interface (MPI) and OpenMP programming. GPU tools, such as OpenACC, CuPy, and CUDA, will be introduced in the course. These topics would useful to all students irrespective of their branch.In the course, the algorithms of applications such as Parallel Computational Fluid Dynamics, Parallel Molecular Dynamics would be covered. The HPC tools will then be employed to the above topics.

INTENDED AUDIENCE: PG students of Science and Engineering (Specially Physics, Mathematics, Mechanical, Aerospace, Computer science and Chemical Engineering). Advance UG students too can take this course.

PREREQUISITES: Basic knowledge of Python and C is required. Also, some knowledge of basic calculus, matrix algebra, and differential equations will help.
Introduction to programming in C - https://nptel.ac.in/courses/106104128
Engineering Mathematics - I - https://nptel.ac.in/courses/111105121

INDUSTRY SUPPORT: Companies involved in high-performance computing, data science, computational fluid dynamics, computational electrodynamics, data sciences, finance, etc.
Summary
Course Status : Ongoing
Course Type : Elective
Language for course content : English
Duration : 12 weeks
Category :
  • Computer Science and Engineering
Credit Points : 3
Level : Postgraduate
Start Date : 20 Jan 2025
End Date : 11 Apr 2025
Enrollment Ends : 03 Feb 2025
Exam Registration Ends : 28 Feb 2025
Exam Date : 26 Apr 2025 IST

Note: This exam date is subject to change based on seat availability. You can check final exam date on your hall ticket.


Page Visits



Course layout

Week 1: Introduction to CPUs
Introduction to High Performance Computation
Basic Design
Processors
Vectorization
Multicore Processors

Week 2: Introduction to Memory/Network/Parallel prog
Memory
Basics of Operating System (Missing Video
RAM
Interconnect
Parallel Computer Classification
Classes of Parallelism
Networks

Week 3: Parallel prog contd.
Top10 HPC Systems
Using GPUs for HPC
Parallel programming fundamentals
Scaling
Programming Practices

Week 4: Intro to Python /C, Arrays
Programming Language
Classes in Python
Inheritance
Modules in Python
Python Pitfalls
Python Arrays
C Arrays 1D
Higher-Dimensional C Arrays

Week 5: Speeding up C/Fortran/Python programs: 
Python Codes Optimization 1
C++ Codes Optimization 1
Python Codes Optimization 2
C++ Codes Optimization 2
C++ Codes Optimization 3 (Cache locality)
Speeding up Using Numba

Week 6: Parallel Applications Multithreading
Finite Difference Method
Particle Simulations (Molecular Dynamics)
Using Multiprocessing Module
Cache Issues in Multiprocessing
Using Multithreading Module
Computing Sum(a*b) with Multithreads
Computing AX=Y with Multithreads

Week 7: MPI Porgramming
MPI Using Mpi4py
Point-To-Point Communication (1)
Point-To-Point Communication (2)
Unblocking Send/Receive
Collective Communication and Reduction Operation
Send/Receive for Finite Difference Scheme
MPI Sum with Examples

Week 8: CUDA programming
Introduction CUDA Programming
Introduction to C (1)
Introduction to C (2)
CUDA Programming (1)
CUDA Programming (2)
Examples Using CUDA Programming
Matrix Multiplication
Derivative Computation Using Finite Difference 

Week 9: Cupy, OpenACC programming
Cupy Programming
CUDA Programming with Numba
Introduction to Open ACC Programming 1
Introduction to Open ACC Programming 2
Solving Laplace Equation / OpenACC UPDATE Directives and Clauses

Week 10: MPI/OpenMP in C
Introduction to MPI in C
MPI Environment
Point to Point Communications
Collective Communication & Reduction Operation
Using OPENMP

Week 11: Applications/Visualization/Profiling
FFT
Spectral Method
Profiling
Paraview

Week 12: Case Study
Project 1: Cahn-Hilliard Equation
Project 2: Compressible Flow
Project 3: Ising Model
Project 4: Magnetohydrodynamic
Project 5: Molecular Dynamics
Project 6: Nonlinear Schrodinger Eq.
Project 7: XY Model
Summary

Books and references

  1. P. S. Pacheco, An Introduction to Parallel Programming, Elsevier (2011)
  2. M. Quinn, Parallel Programming in C and OpenMP, McCraw Hill Education (India) (2003)
  3. G. Zaccone. Python Parallel Programming Cookbook, Packt Publ. (2015)
  4. D. Strontium and M. Yurtoglu, CUDA for engineers, Pearson Education India (2016)
  5. J.Sanders and E. Kandort, CUDA by Example: An Introduction to General-Purpose GPU Programming, Addison-Wesley (2010)
  6. R. Ansorge, Programming in Parallel with CUDA: A Practical Guide, CambridgeUniversity Press (2022)
  7. https://cupy.dev (for CuPy)
  8. R. Farber, Parallel Programming with OpenACC, Morgan Kaufmann (2016)

Instructor bio

Prof. Mahendra Verma

IIT Kanpur
Prof.Mahendra Verma is a Professor in the department of physics, IIT Kanpur. He is a leading researcher in computational and theoretical turbulence and parallel computing. He and his group have developed a pseudo-spectral code TARANG, which is used to simulate flows like hydrodynamics, Rayleigh-Bennard Convection, Magnetohydrodynamics etc.  His group has written more codes, e.g., SARAS, MD Simulator, QuantTARANG, FastSF, etc.  He has written several books.

Prof. Verma is a recipient of Swarnajayanti fellowship, Dr. A.P.J. Abdul Kalam Cray HPC Award, INSA Teacher award, and J.C. Bose fellowship. He is a fellow of INSA, IASc, and NASI.

Course certificate

The course is free to enroll and learn from. But if you want a certificate, you have to register and write the proctored exam conducted by us in person at any of the designated exam centres.
The exam is optional for a fee of Rs 1000/- (Rupees one thousand only).
Date and Time of Exams: April 26, 2025 Morning session 9am to 12 noon; Afternoon Session 2pm to 5pm.
Registration url: Announcements will be made when the registration form is open for registrations.
The online registration form has to be filled and the certification exam fee needs to be paid. More details will be made available when the exam registration form is published. If there are any changes, it will be mentioned then.
Please check the form for more details on the cities where the exams will be held, the conditions you agree to when you fill the form etc.

CRITERIA TO GET A CERTIFICATE

Average assignment score = 25% of average of best 8 assignments out of the total 12 assignments given in the course.
Exam score = 75% of the proctored certification exam score out of 100

Final score = Average assignment score + Exam score

Please note that assignments encompass all types (including quizzes, programming tasks, and essay submissions) available in the specific week.

YOU WILL BE ELIGIBLE FOR A CERTIFICATE ONLY IF AVERAGE ASSIGNMENT SCORE >=10/25 AND EXAM SCORE >= 30/75. If one of the 2 criteria is not met, you will not get the certificate even if the Final score >= 40/100.

Certificate will have your name, photograph and the score in the final exam with the breakup.It will have the logos of NPTEL and IIT Kanpur .It will be e-verifiable at nptel.ac.in/noc.

Only the e-certificate will be made available. Hard copies will not be dispatched.

Once again, thanks for your interest in our online courses and certification. Happy learning.

- NPTEL team


MHRD logo Swayam logo

DOWNLOAD APP

Goto google play store

FOLLOW US