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 28 hours
Course Outline
Introduction
- What constitutes CUDA?
- Comparison of CUDA with OpenCL and SYCL
- Overview of CUDA features and architecture
- Setting up the Development Environment
Getting Started
- Creating a new CUDA project within Visual Studio Code
- Exploring the project structure and associated files
- Compiling and executing the program
- Displaying output using printf and fprintf
CUDA API
- Understanding the role of the CUDA API within the host program
- Querying device information and capabilities using the CUDA API
- Allocating and deallocating device memory via the CUDA API
- Transferring data between host and device using the CUDA API
- Launching kernels and synchronizing threads with the CUDA API
- Handling errors and exceptions through the CUDA API
CUDA C/C++
- Understanding the role of CUDA C/C++ in the device program
- Writing kernels to execute on the GPU and manipulate data using CUDA C/C++
- Utilizing CUDA C/C++ data types, qualifiers, operators, and expressions
- Applying CUDA C/C++ built-in functions, including math, atomic, and warp operations
- Using CUDA C/C++ built-in variables such as threadIdx, blockIdx, and blockDim
- Incorporating CUDA C/C++ libraries like cuBLAS, cuFFT, and cuRAND
CUDA Memory Model
- Distinguishing between host and device memory models
- Applying CUDA memory spaces such as global, shared, constant, and local
- Utilizing CUDA memory objects including pointers, arrays, textures, and surfaces
- Managing CUDA memory access modes such as read-only, write-only, and read-write
- Implementing the CUDA memory consistency model and synchronization mechanisms
CUDA Execution Model
- Distinguishing between host and device execution models
- Defining parallelism using CUDA threads, blocks, and grids
- Using CUDA thread functions such as threadIdx, blockIdx, and blockDim
- Applying CUDA block functions like __syncthreads and __threadfence_block
- Utilizing CUDA grid functions including gridDim, gridSync, and cooperative groups
Debugging
- Identifying common errors and bugs in CUDA programs
- Inspecting variables, breakpoints, and call stacks using the Visual Studio Code debugger
- Debugging CUDA programs on Linux with CUDA-GDB
- Detecting memory errors and leaks using CUDA-MEMCHECK
- Debugging and analyzing CUDA programs on Windows using NVIDIA Nsight
Optimization
- Understanding factors influencing CUDA program performance
- Improving memory throughput with CUDA coalescing techniques
- Reducing memory latency through CUDA caching and prefetching techniques
- Optimizing memory accesses and bandwidth using CUDA shared and local memory techniques
- Measuring and improving execution time and resource utilization via CUDA profiling tools
Requirements
- A solid understanding of the C/C++ language and parallel programming concepts
- Foundational knowledge of computer architecture and memory hierarchy
- Practical experience with command-line tools and code editors
Target Audience
- Developers seeking to learn how to program NVIDIA GPUs using CUDA to exploit their parallelism
- Developers aiming to write high-performance, scalable code that runs across various CUDA devices
- Programmers interested in exploring the low-level aspects of GPU programming to optimize code performance
Custom Corporate Training
Training solutions designed exclusively for businesses.
- Customized Content: We adapt the syllabus and practical exercises to the real goals and needs of your project.
- Flexible Schedule: Dates and times adapted to your team's agenda.
- Format: Online (live), In-company (at your offices), or Hybrid.
Price per private group, online live training, starting from 5200 € + VAT*
Contact us for an exact quote and to hear our latest promotions