Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Course Outline
GPU Architecture and CUDA Fundamentals
- Distinct architectural differences between CPUs and GPUs.
- The NVIDIA GPU streaming multiprocessor architecture.
- An overview of the CUDA programming paradigm.
- Heterogeneous computing and the host-device interaction model.
Establishing the CUDA Development Environment
- Setup and installation of CUDA Toolkit 13.x.
- Utilizing the NVCC compiler and managing the build process.
- Environment verification through device query mechanisms.
- Integration with IDEs and associated development utilities.
Developing and Executing CUDA Kernels
- Syntax for kernel functions and specific qualifiers.
- Configuring and executing kernel launches.
- Implementing vector addition and fundamental data-parallel structures.
- Implementing robust CUDA error-checking macros.
CUDA Thread Organization and Execution
- Structure of grids, blocks, and individual threads.
- Thread indexing techniques and global ID derivation.
- Warp execution dynamics and the SIMT model.
- Managing occupancy and resource efficiency.
GPU Memory Structure and Control
- Overview of memory types: global, shared, constant, and registers.
- Device memory allocation and deallocation procedures.
- Data transfer between host and device.
- Leveraging shared memory for intra-block cooperation.
Unified Memory and Data Movement
- The unified memory model and managed allocation strategies.
- Page migration mechanics and on-demand paging.
- Utilizing asynchronous prefetching via cudaMemPrefetchAsync.
- Applying memory advice hints to optimize access patterns.
System-Level Profiling via Nsight Systems
- Analyzing timelines in Nsight Systems.
- Pinpointing CPU-GPU synchronization events.
- Visualizing kernel execution flows and memory transactions.
- Interpreting system-wide performance metrics.
Kernel Refinement using Nsight Compute
- Interactive kernel profiling with Nsight Compute.
- Evaluating memory throughput and bandwidth efficiency.
- Analyzing compute utilization and warp state statistics.
- Applying guided analysis and optimization guidelines.
Concurrent Streams and Asynchronous Execution
- Understanding CUDA streams and the default stream behavior.
- Overlapping kernel execution with data transfer operations.
- Stream synchronization mechanisms and CUDA events.
- Design patterns for multi-stream pipelines.
Error Management and Debugging Utilities
- Interpreting CUDA API error codes and implementing recovery logic.
- Using Compute-sanitizer for memory access validation.
- Debugging kernels with cuda-gdb.
- Employing assertions and synchronous error detection methods.
Optimization Strategy Based on Profiling Data
- Methodology for iterative profiling.
- Identifying and prioritizing performance bottlenecks.
- Conducting performance regression tests.
- Documenting optimization choices and outcomes.
Comprehensive GPU-Accelerated Application Project
- Architecting a full-scale GPU-accelerated solution.
- Integrating profiling throughout the development lifecycle.
- Performance benchmarking and result reporting.
- Considerations for deploying in production environments.
Requirements
- Solid C/C++ programming skills, encompassing variable types, loop structures, conditionals, function usage, and array handling.
- Experience with command-line compilation and program execution.
- No previous experience with GPU or CUDA programming is necessary.
Target Audience
- Software developers and engineers looking to enhance C/C++ application performance through GPU acceleration.
- Scientific researchers and HPC specialists moving from CPU-centric to heterogeneous computing environments.
- Technical leaders assessing GPU acceleration strategies for production-grade workloads.
8 Hours