Get in Touch

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

  • Organization of grids, blocks, and threads
  • 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 logic, functions, and array handling
  • Basic understanding of compiling and running programs via the command line
  • No previous experience with GPU or CUDA programming is necessary

Target Audience

  • Software developers and engineers aiming to accelerate C/C++ applications using GPUs
  • Scientific researchers and HPC professionals moving from CPU-centric systems to heterogeneous computing environments
  • Technical leaders assessing GPU acceleration for production-level workloads
 8 Hours

Number of participants


Price per participant

Upcoming Courses

Related Categories