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 Computing and CUDA Architecture
- Architectural differences between CPUs and GPUs.
- NVIDIA GPU streaming multiprocessor model.
- Overview of the CUDA programming model.
- Heterogeneous computing and the host-device paradigm.
Setting Up the CUDA Development Environment
- Installing CUDA Toolkit 13.x.
- NVCC compiler and build workflow.
- Verifying the environment through device queries.
- IDE integration and development tools.
Writing and Launching CUDA Kernels
- Syntax and qualifiers for kernel functions.
- Launch configuration and execution mechanics.
- Vector addition and basic data-parallel patterns.
- CUDA error checking macros.
CUDA Thread Hierarchy and Execution Model
- Organization of grids, blocks, and threads.
- Thread indexing and global ID calculation.
- Warp execution and the SIMT model.
- Occupancy and resource utilization strategies.
GPU Memory Architecture and Management
- Memory types: global, shared, constant, and registers.
- Allocating and freeing device memory.
- Host-to-device and device-to-host transfers.
- Utilizing shared memory for intra-block collaboration.
Unified Memory and Data Migration
- The unified memory model and managed allocations.
- Page migration and on-demand paging mechanisms.
- Asynchronous prefetching using cudaMemPrefetchAsync.
- Memory advice hints for optimizing access patterns.
System-Wide Profiling with Nsight Systems
- Analyzing timelines in Nsight Systems.
- Identifying CPU-GPU synchronization points.
- Visualizing kernel execution and memory transfers.
- Interpreting system-level performance data.
Kernel Optimization with Nsight Compute
- Interactive kernel profiling using Nsight Compute.
- Analyzing memory throughput and bandwidth.
- Evaluating compute utilization and warp state statistics.
- Guided analysis and optimization rules.
Concurrent Streams and Asynchronous Operations
- CUDA streams and the default stream behavior.
- Overlapping kernel execution with data transfers.
- Stream synchronization and CUDA events.
- Design patterns for multi-stream pipelines.
Error Handling and Debugging Tools
- CUDA API error codes and recovery strategies.
- Using compute-sanitizer for memory access checks.
- Debugging kernels with cuda-gdb.
- Assertions and synchronous error detection techniques.
Profile-Driven Optimization Workflow
- Iterative profiling methodology.
- Identifying and prioritizing bottlenecks.
- Performance regression testing.
- Documenting optimization decisions.
End-to-End Accelerated Application Project
- Designing a complete GPU-accelerated solution.
- Integrating profiling throughout the development lifecycle.
- Performance benchmarking and reporting.
- Deployment considerations for production environments.
Requirements
- Basic competency in C/C++ programming, including variable types, loops, conditional statements, functions, and array manipulations.
- Familiarity with compiling and running programs via the command line.
- No prior experience with GPU or CUDA programming is required.
Audience
- Software developers and engineers aiming to accelerate C/C++ applications using GPUs.
- Scientific researchers and HPC practitioners transitioning from CPU-only systems to heterogeneous computing environments.
- Technical leads assessing GPU acceleration for production workloads.
8 Hours