Lecture 0 - Introduction to High Performance Scientific Computing
Lecture 1 - Introduction to Operating System
Lecture 2 - Linux Kernel Explained
Lecture 3 - Mastering Linux Directory and File Management
Lecture 4 - Understanding File Permissions and Ownership in Linux
Lecture 5 - Mastering Linux Text Processing and File Management
Lecture 6 - Linux Memory and Networking Commands
Lecture 7 - Understanding Shell Scripting: Parent-Child Processes and User Input Handling
Lecture 8 - Shell Scripting Tutorial for Beginners
Lecture 9 - Introduction to High-Performance Computing (HPC) and Its Key Components
Lecture 10 - Exploring Computing Platform Architecture and CPU Optimization Techniques
Lecture 11 - Hierarchical Memory Systems and Scalable Architectures in Large-Scale Computing
Lecture 12 - Concurrency and Synchronization in Parallel Programming:Techniques and Frameworks
Lecture 13 - Need for Parallel Computing
Lecture 14 - Role of Numerical Models in Solving complex problems on Computers
Lecture 15 - Common Challenges with Memory in Computer Architecture
Lecture 16 - Organization of hardware in Large HPC systems
Lecture 17 - Architecture of Nvidias Grace Hopper Superchip
Lecture 18 - Introduction to Shared Memory Programming using OpenMP
Lecture 19 - Distribution of work using multiple OpenMP Threads
Lecture 20 - Synchronization and Parallel Loops in OpenMP
Lecture 21 - Storage attributes of different variables in OpenMP
Lecture 22 - OpenMP Memory Model, Irregular Parallelism, and Tasks
Lecture 23 - Parallelization of example codes using OpenMP - Part 1
Lecture 24 - Parallelization of example codes using OpenMP - Part 2
Lecture 25 - Introduction to Message Passing Interface (MPI)
Lecture 26 - Sending and Receiving the messages using MPI
Lecture 27 - Collective Communication in MPI
Lecture 28 - Domain Decomposition
Lecture 29 - Parallelization of example code using MPI
Lecture 30 - Performance Analysis Frameworks for Parallel Programming
Lecture 31 - Examples of Collective Communication in MPI - Part 1
Lecture 32 - Examples of Collective Communication in MPI - Part 2
Lecture 33 - Introduction to GPU Computing
Lecture 34 - A Dive into Software Stack and Nvidia Architecture
Lecture 35 - Comparative Analysis of NVIDIA and Intel GPU Architectures
Lecture 36 - Understanding FLOPS and Memory Bandwidth Calculations for NVIDIA GPUs
Lecture 37 - SIMD vs. SIMT: Thread Mapping, Scheduling, and Pipelining in NVIDIA GPUs
Lecture 38 - Understanding 1D, 2D, and 3D Grid Arrangements - Part 1
Lecture 39 - Understanding 1D, 2D, and 3D Grid Arrangements - Part 2
Lecture 40 - Thread Block Mapping and Warp Scheduling in GPU
Lecture 41 - Exploring Warp Scheduling and Latency Management in NVIDIA GPUs
Lecture 42 - An Introduction to GPU Programming: Tools, Techniques, and CUDA - Part 1
Lecture 43 - An Introduction to GPU Programming: Tools, Techniques, and CUDA - Part 2
Lecture 44 - Understanding NVIDIA GPU Memory Types and Efficient Memory Management - Part 1
Lecture 45 - Understanding NVIDIA GPU Memory Types and Efficient Memory Management - Part 2
Lecture 46 - Understanding Third Divergence in Parallel Computing and Its Impact on GPU Performance
Lecture 47 - Memory Layouts and Their Role in Optimizing Computing Performance
Lecture 48 - CUDA Program Compilation and Execution: A Step-by-Step Guide - Part 1
Lecture 49 - CUDA Program Compilation and Execution: A Step-by-Step Guide - Part 2
Lecture 50 - Introduction to OpenACC
Lecture 51 - Parallelization of loops using OpenACC
Lecture 52 - OpenACC Data Management
Lecture 53 - OpenACC Loop Optimizations
Lecture 54 - Implementing Asynchronous behavior in OpenACC
Lecture 55 - Programming for multiple-device architecture using OpenACC
Lecture 56 - Profiling and Parallelizing the serial code using OpenACC
Lecture 57 - Programming for multiple-device architecture using MPI and CUDA
Lecture 58 - Programming for multiple-device architecture using MPI and OpenACC
Lecture 59 - Profiling Serial codes using GNU gprof
Lecture 60 - Profiling and Debugging of the codes using Valgrind
Lecture 61 - Code Debugging using GDB
Lecture 62 - Performance Analysis of MPI codes
Lecture 63 - Parallel Debugging of MPI Programs using Open Source Tools
Lecture 64 - Role of Numerical Methods in High Performance Scientific Computing
Lecture 65 - Libraries used in High Performance Scientific Computing
Lecture 66 - Introduction to HPC Schedulers using SLURM and PBS
Lecture 67 - Scientific Visualization
Lecture 68 - Revision and challenges in the future
Lecture 69 - OpenMP Revision
Lecture 70 - CUDA Revision
Lecture 71 - MPI Revision
Lecture 72 - OpenACC Revision
Lecture 73 - Heterogeneous Computing
Lecture 74 - Trends in Microprocessor Architectures