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 is ROCm?
- What is 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 file organization
- Compiling and executing the program
- Displaying output using printf and fprintf
ROCm API
- Understanding the function of the ROCm API in host programs
- Querying device information and capabilities via the ROCm API
- Allocating and deallocating device memory using the ROCm API
- Transferring data between host and device with the ROCm API
- Launching kernels and synchronizing threads via the ROCm API
- Handling errors and exceptions using the ROCm API
HIP Language
- Understanding the role of the HIP language in device programs
- Writing kernels in HIP that execute on the GPU and manipulate data
- Using HIP data types, qualifiers, operators, and expressions
- Utilizing HIP built-in functions, variables, and libraries for common tasks
ROCm and HIP Memory Model
- Distinguishing between host and device memory models
- Utilizing ROCm and HIP memory spaces, such as global, shared, constant, and local
- Working with ROCm and HIP memory objects, including 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
- Identifying factors influencing 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 minimize memory latency
- Optimizing memory accesses and bandwidth using ROCm and HIP shared and local memory techniques
- Measuring and improving execution time and resource utilization through ROCm and HIP profiling tools
Summary and Next Steps
Requirements
- Familiarity with the C/C++ programming languages and parallel programming principles
- Foundational knowledge of computer architecture and memory hierarchies
- Proficiency with command-line tools and code editors
Target Audience
- Developers seeking to master the use of ROCm and HIP for programming AMD GPUs and leveraging their parallelism
- Developers aiming to write high-performance, scalable code adaptable to various AMD devices
- Programmers interested in exploring the low-level intricacies of GPU programming to optimize code performance