High Performance Scientific Computing: an independent textbook rewrite

NPTEL, IIT Bombay · Prof. Shivasubramanian Gopalakrishnan and course team · January 2025 · 31 chapters from 75 recordings · 11 chapter pages.

This reading edition is partial. Chapters 1-11 cover the first 20 recordings (Week 0 to Week 4, Lecture 1) and have recorded independent reviews; chapters 12-31 are not yet written. Final independent sign-offs remain pending for chapters 3, 9, 10 and 11: their last review findings were repaired and checked by the lead, but no later independent zero-blocking verdict is recorded.

Learning route and prerequisites

Start with C programming, elementary linear algebra and calculus, and a working Linux shell (native Linux or WSL 2 on Windows). Chapter 9 uses finite differences for the Laplace equation. The chapter programs are C, Python 3 and Bash; they need gcc with OpenMP support, and the Python programs of chapters 1, 4 and 9 also need NumPy.

  1. Purpose and the Linux environment, chapters 1–5: what scientific computing needs from hardware, the operating system and kernel, the file system and its permissions, processes, text tools, memory and networking commands, and shell scripts.
  2. Hardware, memory and concurrency, chapters 6–8: the components of an HPC system and a compute node, the memory hierarchy and scalable architectures, and races, locks, atomic instructions and barriers.
  3. Why parallel, and what limits it, chapters 9–10: the cost of a numerical model (the serial Jacobi solver used as the running example), speedup laws, memory bottlenecks, the organization of large systems and the Grace Hopper superchip.
  4. Shared-memory programming, chapter 11: OpenMP threads, parallel regions and the distribution of work.
  5. Not yet written, chapters 12–31: OpenMP II–III, MPI, domain decomposition, GPU architecture and CUDA, OpenACC, multi-device programs, profiling and debugging, numerical libraries, batch schedulers and visualization, and heterogeneous computing.

Read the chapters in order, then work through the expandable solutions and reproduce the chapter programs. The source map separates lecture material, research extensions, and original teaching constructions.

This navigation guide is an editorial aid. Final scientific review status is recorded separately in the editorial record.

31 chapters shown

  1. 01. What high performance scientific computing is for

    Reviewed · locally validated

    Recordings: Lecture W0L0

  2. 02. Operating systems and the Linux kernel

    Reviewed · locally validated

    Recordings: Lecture W1L1 · Lecture W1L2

  3. 03. The Linux file system: names, inodes, permission bits and ownership

    Written · final review pending

    Recordings: Lecture W1L3 · Lecture W1L4

  4. 04. Processes, text processing, memory and networking from the command line

    Reviewed · locally validated

    Recordings: Lecture W1L5 · Lecture W1L6

  5. 05. Shell scripting: processes, input, and control flow

    Reviewed · locally validated

    Recordings: Lecture W2L1 · Lecture W2L2

  6. 06. The components of an HPC system and the architecture of a compute node

    Reviewed · locally validated

    Recordings: Lecture W2L3 · Lecture W2L4

  7. 07. Hierarchical memory and scalable architectures

    Reviewed · locally validated

    Recordings: Lecture W2L5

  8. 08. Concurrency and synchronization: races, locks, atomic instructions and barriers

    Reviewed · locally validated

    Recordings: Lecture W2L6

  9. 09. Why parallel computing: numerical models and their cost

    Written · final review pending

    Recordings: Lecture W3L1 · Lecture W3L2

  10. 10. Memory bottlenecks, the organization of large HPC systems and the Grace Hopper superchip

    Written · final review pending

    Recordings: Lecture W3L3 · Lecture W3L4 · Lecture W3L5

  11. 11. OpenMP I: shared-memory threads and the distribution of work

    Written · final review pending

    Recordings: Lecture W3L6 · Lecture W4L1

  12. 12. OpenMP II: synchronization, parallel loops, and data-sharing attributes

    Chapter pending

    Recordings: Lecture W4L2 · Lecture W4L3

  13. 13. OpenMP III: memory model, tasks, and parallelizing example codes

    Chapter pending

    Recordings: Lecture W4L4 · Lecture W4L5 · Lecture W4L6

  14. 14. MPI I: processes and point-to-point messages

    Chapter pending

    Recordings: Lecture W5L1 · Lecture W5L2

  15. 15. MPI II: collective communication

    Chapter pending

    Recordings: Lecture W5L3 · Lecture W6L1 · Lecture W6L2

  16. 16. Domain decomposition, an MPI solver, and performance analysis

    Chapter pending

    Recordings: Lecture W5L4 · Lecture W5L5 · Lecture W5L6

  17. 17. GPU computing: motivation, software stack, NVIDIA and Intel architectures

    Chapter pending

    Recordings: Lecture W6L3 · Lecture W6L4 · Lecture W6L5

  18. 18. GPU throughput arithmetic: FLOPS, bandwidth, SIMD and SIMT

    Chapter pending

    Recordings: Lecture W6L6 · Lecture W7L1

  19. 19. The thread hierarchy: grids, blocks, warps, and warp scheduling

    Chapter pending

    Recordings: Lecture W7L2 · Lecture W7L3 · Lecture W7L4 · Lecture W7L5

  20. 20. CUDA programming: tools, kernels, and launch configuration

    Chapter pending

    Recordings: Lecture W8L1 · Lecture W8L2

  21. 21. GPU memory types and memory management

    Chapter pending

    Recordings: Lecture W8L3 · Lecture W8L4

  22. 22. Thread divergence and memory layouts

    Chapter pending

    Recordings: Lecture W8L5 · Lecture W8L6

  23. 23. CUDA compilation and execution

    Chapter pending

    Recordings: Lecture W9L1 · Lecture W9L2

  24. 24. OpenACC I: directives, parallel loops, and data management

    Chapter pending

    Recordings: Lecture W9L3 · Lecture W9L4 · Lecture W9L5

  25. 25. OpenACC II: loop optimization, asynchrony, and multiple devices

    Chapter pending

    Recordings: Lecture W9L6 · Lecture W9L7 · Lecture W9L8

  26. 26. Multi-device programs: profiling-driven OpenACC, MPI with CUDA, MPI with OpenACC

    Chapter pending

    Recordings: Lecture W10L1 · Lecture W10L2 · Lecture W10L3

  27. 27. Profiling and debugging serial codes: gprof, Valgrind, GDB

    Chapter pending

    Recordings: Lecture W10L4 · Lecture W10L5 · Lecture W10L6

  28. 28. Performance analysis and debugging of MPI programs

    Chapter pending

    Recordings: Lecture W11L1 · Lecture W11L2

  29. 29. Numerical methods and scientific libraries

    Chapter pending

    Recordings: Lecture W11L3 · Lecture W11L4

  30. 30. Batch schedulers and scientific visualization

    Chapter pending

    Recordings: Lecture W11L5 · Lecture W11L6

  31. 31. Heterogeneous computing, processor trends, and the road ahead (with revision)

    Chapter pending

    Recordings: Lecture W12L1 · Lecture W12L2 · Lecture W12L3 · Lecture W12L4 · Lecture W12L5 · Lecture W12L6 · Lecture W12L7