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
Configuring the CUDA Development Environment
- Installation of CUDA Toolkit 13.x
- NVCC compiler and build workflows
- Environment verification through device queries
- Integration with IDEs and development tools
Creating and Executing CUDA Kernels
- Kernel function syntax and qualifiers
- Launch configuration and execution details
- Vector addition and fundamental data-parallel patterns
- Implementation of CUDA error checking macros
CUDA Thread Hierarchy and Execution Model
- Organization of grids, blocks, and threads
- Thread indexing and global ID computation
- Warp execution and the SIMT model
- Occupancy and resource utilization metrics
GPU Memory Architecture and Management
- Memory types: global, shared, constant, and registers
- Allocation and release of device memory
- Transfers between host and device
- Use of shared memory for intra-block coordination
Unified Memory and Data Migration
- Unified memory model and managed allocations
- Page migration and on-demand paging mechanisms
- Asynchronous prefetching via cudaMemPrefetchAsync
- Memory advice hints for managing access patterns
System-Wide Profiling with Nsight Systems
- Timeline analysis in Nsight Systems
- Detection of CPU-GPU synchronization points
- Visualization of kernel execution and memory transfers
- Interpretation of system-level performance metrics
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 rules
Concurrent Streams and Asynchronous Operations
- CUDA streams and the concept of the default stream
- Overlapping kernel execution with data transfers
- Stream synchronization and CUDA events
- Design patterns for multi-stream pipelines
Error Handling and Debugging Utilities
- CUDA API error codes and recovery tactics
- Using compute-sanitizer for memory access verification
- Kernel debugging with cuda-gdb
- Assertions and synchronous error detection
Profile-Driven Optimization Workflow
- Methodology for iterative profiling
- Identification and prioritization of bottlenecks
- Performance regression testing
- Documentation of optimization decisions
End-to-End Accelerated Application Project
- Designing a comprehensive GPU-accelerated solution
- Integrating profiling throughout the development cycle
- Performance benchmarking and reporting
- Deployment considerations for production environments
Requirements
- Fundamental proficiency in C/C++ programming, covering variable types, loops, conditionals, functions, and array manipulation
- Experience with compiling and executing programs via the command line
- No previous experience in GPU or CUDA programming is necessary
Target Audience
- Software developers and engineers aiming to enhance C/C++ application performance using GPUs
- Scientific researchers and HPC professionals shifting from CPU-only to heterogeneous computing environments
- Technical leads assessing GPU acceleration for production-level workloads
8 Hours