18. GPU Kernel Programming [HPC in Julia]
In this video, we learn more about writing code for Graphics Processing Units (GPUs). We cover the CUDA programming model, writing custom kernels in Julia and we accelerate our N-body simulation from earlier in the series to run on the GPU. The tools you learn from this video should be applicable to writing kernels in any language and for any GPU framework, despite our focus on CUDA specifically. This module was designed as an MPAGS (Midlands Physics Alliance Graduate School) module and aimed at postgraduates and early career researchers. Resources: 📹 Atomic operations: https://youtu.be/GO4Sy9I2DWE?t=940 📹 N Body Simulation Introduction: https://www.youtube.com/watch?v=C63BTJAuqW8 📚 Optimizing the N Body kernel: https://developer.nvidia.com/gpugems/gpugems3/part-v-physics-simulation/chapter-31-fast-n-body-simulation-cuda 🔗 Lecture notes: https://jamiemair.co.uk/courses/hpc/gpu_cuda_kernels Timecodes: 00:00:00 Introduction 00:02:35 CUDA Programming Model 00:08:11 Threads & Blocks 00:13:51 Rules for writing kernels 00:15:03 Shared memory & Synchronisation 00:26:04 Memory Coalescing 00:31:45 Warp Divergence 00:35:35 Case Study: N-Body Simulation 01:00:37 CUDA Alternatives Useful links: Git/GitHub for Researchers: https://www.youtube.com/watch?v=CuOmaUS1FnM Julia Documentation: https://docs.julialang.org/en/v1/ MPAGS Registration: https://warwick.ac.uk/fac/sci/physics/mpags/registration/ Course Website: https://jamiemair.co.uk/courses/hpc #CUDA #GPU #Julia #HPC #ParallelComputing
Download
1 formatsVideo Formats
Right-click 'Download' and select 'Save Link As' if the file opens in a new tab.