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
- Defining ROCm.
- Defining HIP.
- Comparing ROCm, CUDA, and OpenCL.
- Overview of ROCm and HIP features and architecture.
- Setting up the Development Environment.
Getting Started
- Creating a new ROCm project using Visual Studio Code.
- Exploring the project structure and constituent files.
- Compiling and executing the program.
- Displaying output using printf and fprintf.
ROCm API
- Understanding the role of the ROCm API in host-level programming.
- Querying device information and capabilities via the ROCm API.
- Allocating and deallocating device memory using the ROCm API.
- Copying data between host and device with the ROCm API.
- Launching kernels and synchronizing threads through the ROCm API.
- Managing errors and exceptions using the ROCm API.
HIP Language
- Understanding the role of the HIP language in device-level programming.
- Writing HIP kernels that execute on the GPU and manipulate data.
- Utilizing HIP data types, qualifiers, operators, and expressions.
- Using HIP built-in functions, variables, and libraries for common tasks and operations.
ROCm and HIP Memory Model
- Distinguishing between host and device memory models.
- Utilizing ROCm and HIP memory spaces, including global, shared, constant, and local.
- Working with ROCm and HIP memory objects, such as pointers, arrays, textures, and surfaces.
- Applying ROCm and HIP memory access modes, such as read-only, write-only, and read-write.
- Implementing ROCm and HIP memory consistency models and synchronization mechanisms.
ROCm and HIP Execution Model
- Distinguishing between host and device execution models.
- Defining parallelism using ROCm and HIP threads, blocks, and grids.
- Utilizing ROCm and HIP thread functions, such as hipThreadIdx_x, hipBlockIdx_x, and hipBlockDim_x.
- Applying ROCm and HIP block functions, such as __syncthreads and __threadfence_block.
- Using ROCm and HIP grid functions, such as hipGridDim_x, hipGridSync, and cooperative groups.
Debugging
- Identifying common errors and bugs in ROCm and HIP programs.
- Inspecting variables, breakpoints, and call stacks using the Visual Studio Code debugger.
- Debugging ROCm and HIP programs on AMD devices using the ROCm Debugger.
- Analyzing ROCm and HIP programs on AMD devices using the ROCm Profiler.
Optimization
- Understanding the factors impacting the performance of ROCm and HIP programs.
- Applying ROCm and HIP coalescing techniques to enhance memory throughput.
- Using ROCm and HIP caching and prefetching techniques to reduce memory latency.
- Leveraging ROCm and HIP shared and local memory techniques to optimize memory access and bandwidth.
- Employing ROCm and HIP profiling tools to measure and improve execution time and resource utilization.
Summary and Next Steps
Requirements
- Familiarity with C/C++ programming and core parallel computing concepts.
- Fundamental understanding of computer architecture and memory hierarchies.
- Practical experience with command-line utilities and code editors.
Target Audience
- Developers seeking to master ROCm and HIP for programming AMD GPUs and harnessing their parallel power.
- Developers aiming to write high-performance, scalable code compatible across various AMD devices.
- Programmers interested in exploring the low-level intricacies of GPU programming to optimize code performance.
28 Hours