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.
Duration 8 hours
Course Outline
GPU Computing and CUDA Architecture
- Architectural distinctions 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
- Installation of the CUDA Toolkit 13.x
- NVCC compiler and build workflow
- Environment verification through device queries
- Integration with IDEs and development tools
Writing and Launching CUDA Kernels
- Kernel function syntax and qualifiers
- Launch configuration and execution mechanics
- Vector addition and fundamental 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 metrics
GPU Memory Architecture and Management
- Memory types: global, shared, constant, and registers
- Device memory allocation and deallocation
- Host-to-device and device-to-host data transfers
- Shared memory for intra-block collaboration
Unified Memory and Data Migration
- 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
- Timeline analysis in Nsight Systems
- Identifying CPU-GPU synchronization points
- Visualization of kernel execution and memory transfers
- Interpretation of system-level performance data
Kernel Optimization with Nsight Compute
- Interactive kernel profiling with Nsight Compute
- Analysis of memory throughput and bandwidth
- Compute utilization and warp state statistics
- Guided analysis and optimization rule application
Concurrent Streams and Asynchronous Operations
- CUDA streams and the concept of the default stream
- Overlapping kernel execution with data transfers
- Stream synchronization and the use of CUDA events
- Design patterns for multi-stream pipelines
Error Handling and Debugging Tools
- CUDA API error codes and recovery strategies
- Memory access checking using Compute-sanitizer
- Kernel debugging with cuda-gdb
- Assertions and synchronous error detection techniques
Profile-Driven Optimization Workflow
- Iterative profiling methodology
- Identification and prioritization of bottlenecks
- Performance regression testing procedures
- Documentation of optimization decisions
End-to-End Accelerated Application Project
- Designing a complete GPU-accelerated solution
- Integration of profiling throughout the development cycle
- Performance benchmarking and reporting
- Deployment considerations for production environments
Requirements
- Fundamental C/C++ programming skills, including variable types, loops, conditional logic, functions, and array operations
- Proficiency in compiling and executing programs via the command line
- No prior experience in GPU or CUDA programming is necessary
Audience
- Software developers and engineers looking to enhance C/C++ applications with GPUs
- Scientific researchers and HPC specialists moving from CPU-only to heterogeneous computing
- Technical leaders assessing GPU acceleration for production environments