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
- Differences between CPU and GPU architectures
- 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 with device queries
- IDE integration and development tools
Writing and Launching CUDA Kernels
- Syntax and qualifiers for kernel functions
- Launch configuration and execution
- Vector addition and basic data-parallel patterns
- CUDA error checking macros
CUDA Thread Hierarchy and Execution Model
- Grid, block, and thread organization
- Thread indexing and global ID calculation
- Warp execution and SIMT model
- Occupancy and resource utilization
GPU Memory Architecture and Management
- Memory types: global, shared, constant, registers
- Allocating and freeing device memory
- Host-to-device and device-to-host transfers
- Shared memory for intra-block collaboration
Unified Memory and Data Migration
- Unified memory model and managed allocations
- Page migration and on-demand paging
- Asynchronous prefetching with cudaMemPrefetchAsync
- Memory advice hints for access patterns
System-Wide Profiling with Nsight Systems
- Nsight Systems timeline analysis
- Identifying CPU-GPU synchronization points
- Visualizing kernel execution and memory transfers
- Interpreting system-level performance data
Kernel Optimization with Nsight Compute
- Nsight Compute interactive kernel profiling
- Memory throughput and bandwidth analysis
- Compute utilization and warp state statistics
- Guided analysis and optimization rules
Concurrent Streams and Asynchronous Operations
- CUDA streams and the default stream
- Overlapping kernel execution with data transfers
- Stream synchronization and CUDA events
- Multi-stream pipeline design patterns
Error Handling and Debugging Tools
- CUDA API error codes and recovery strategies
- Compute-sanitizer for memory access checking
- cuda-gdb for kernel debugging
- Assertions and synchronous error detection
Profile-Driven Optimization Workflow
- Iterative profiling methodology
- Bottleneck identification and prioritization
- Performance regression testing
- Documenting optimization decisions
End-to-End Accelerated Application Project
- Designing a complete GPU-accelerated solution
- Integrating profiling throughout development
- Performance benchmarking and reporting
- Deployment considerations for production
Requirements
- Fundamental C/C++ programming skills, including variable types, loops, conditional statements, functions, and array operations
- Understanding of compiling and running programs via the command line
- No previous GPU or CUDA programming experience is necessary
Target Audience
- Software developers and engineers aiming to accelerate C/C++ applications using GPUs
- Scientific researchers and HPC professionals moving from CPU-only to heterogeneous computing
- Technical leaders assessing GPU acceleration for production workloads
8 Hours