Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

NPTEL

Practical High-Performance Computing

NPTEL via Swayam

Overview

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.INDUSTRY SUPPORT: Companies involved in high-performance computing, data science, computational fluid dynamics, computational electrodynamics, data sciences, finance, etc.

Syllabus

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-DimensionalC 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 ApplicationsMultithreading
  • 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

Taught by

Prof. Mahendra Verma

Reviews

Start your review of Practical High-Performance Computing

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.