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
Introduction
- Definition and purpose of the CUDA parallel computing platform
- Comparative analysis of CUDA, OpenCL, and SYCL frameworks
- Comprehensive review of CUDA capabilities and system architecture
- Configuration of the software development environment
Foundational Implementation
- Initiation of a CUDA project utilizing Visual Studio Code
- Analysis of project directory structures and component files
- Compilation and execution of CUDA applications
- Output management via standard I/O functions such as printf and fprintf
CUDA Application Programming Interface
- Role of the CUDA API within host-side program logic
- Retrieval of device specifications and capability metrics via API calls
- Management of device memory allocation and deallocation protocols
- Facilitation of data transfer operations between host and device memory spaces
- Kernel launch procedures and thread synchronization mechanisms
- Implementation of error handling and exception management strategies
CUDA C/C++ Programming
- Function of CUDA C/C++ in device-side program execution
- Development of GPU-resident kernels for data manipulation and processing
- Application of data types, qualifiers, operators, and expression logic
- Utilization of built-in function libraries including math, atomic operations, and warp-level primitives
- Integration of built-in variables for thread and block identification (e.g., threadIdx, blockIdx)
- Incorporation of specialized libraries such as cuBLAS, cuFFT, and cuRAND
Memory Architecture
- Distinctions between host-side and device-side memory hierarchies
- Application of memory spaces including global, shared, constant, and local memory
- Management of memory objects such as pointers, arrays, textures, and surfaces
- Configuration of access modes including read-only, write-only, and read-write permissions
- Adherence to memory consistency models and synchronization standards
Execution Model
- Differentiation between host and device execution paradigms
- Definition of parallelism structures using threads, blocks, and grids
- Utilization of thread-level indexing variables and functions
- Implementation of block-level synchronization barriers and fence mechanisms
- Application of grid-level coordination, including cooperative groups
Debugging Procedures
- Identification of common failure modes and defects in CUDA code
- Inspection of variables, breakpoints, and call stacks using Visual Studio Code
- Debugging of CUDA applications on Linux environments via CUDA-GDB
- Detection of memory integrity errors and leaks using CUDA-MEMCHECK
- Performance analysis and debugging on Windows using NVIDIA Nsight tools
Performance Optimization
- Assessment of variables influencing CUDA application efficiency
- Application of memory coalescing strategies to enhance throughput
- Implementation of caching and prefetching mechanisms to minimize latency
- Optimization of memory access patterns using shared and local memory resources
- Utilization of profiling tools to monitor execution time and resource consumption
Conclusion and Advanced Paths
Requirements
- Proficiency in C/C++ language constructs and fundamental parallel programming principles
- Familiarity with computer architecture and memory hierarchy concepts
- Practical experience with command-line interfaces and source code editors
Target Audience
- Developers seeking to acquire skills in using CUDA to program NVIDIA GPUs and exploit parallel processing capabilities
- Engineers aiming to develop high-performance, scalable code compatible with various CUDA-enabled devices
- Programmers interested in exploring low-level aspects of GPU programming and enhancing code efficiency
28 Hours