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 21 hours
Course Outline
Introduction
- Defining ROCm
- Understanding HIP
- Comparing ROCm, CUDA, and OpenCL
- Architectural overview of ROCm and HIP features
- Differences between ROCm for Windows and ROCm for Linux
Installation
- Installing ROCm on the Windows platform
- Verifying installation success and checking device compatibility
- Updating or uninstalling ROCm on Windows
- Resolving common installation challenges
Getting Started
- Initiating a new ROCm project using Visual Studio Code on Windows
- Examining project structure and file organization
- Compiling and executing the program
- Displaying output via printf and fprintf
ROCm API
- Integrating the ROCm API into host programs
- Querying device information and capabilities
- Allocating and deallocating device memory
- Transferring data between host and device
- Launching kernels and synchronizing threads
- Managing errors and exceptions
HIP Language
- Applying HIP in device-side programs
- Writing kernels for GPU execution and data manipulation
- Utilizing data types, qualifiers, operators, and expressions
- Employing built-in functions, variables, and libraries
ROCm and HIP Memory Model
- Leveraging distinct memory spaces, including global, shared, constant, and local
- Working with various memory objects like pointers, arrays, textures, and surfaces
- Applying different memory access modes such as read-only, write-only, and read-write
- Understanding the memory consistency model and synchronization mechanisms
ROCm and HIP Execution Model
- Managing execution units: threads, blocks, and grids
- Utilizing thread functions such as hipThreadIdx_x, hipBlockIdx_x, and hipBlockDim_x
- Applying block functions like __syncthreads and __threadfence_block
- Using grid functions including hipGridDim_x, hipGridSync, and cooperative groups
Debugging
- Debugging ROCm and HIP applications on Windows
- Using the Visual Studio Code debugger to inspect variables, set breakpoints, and analyze the call stack
- Employing the ROCm Debugger to debug programs on AMD devices
- Using the ROCm Profiler to analyze program performance on AMD devices
Optimization
- Optimizing ROCm and HIP programs within a Windows environment
- Applying coalescing techniques to boost memory throughput
- Reducing memory latency through caching and prefetching strategies
- Enhancing memory access and bandwidth using shared and local memory techniques
- Measuring and improving execution time and resource utilization via profiling tools
Summary and Next Steps
Requirements
- Proficiency in C/C++ and an understanding of parallel programming concepts
- Fundamental knowledge of computer architecture and memory hierarchy
- Practical experience with command-line utilities and code editors
- Familiarity with the Windows operating system and PowerShell
Intended Audience
- Developers looking to learn how to install and utilize ROCm on Windows to program AMD GPUs and leverage their parallelism
- Developers aiming to write high-performance, scalable code compatible with various AMD devices
- Programmers seeking to explore the low-level nuances of GPU programming and enhance code performance