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 scope of ROCm
- Overview of the HIP programming model
- Comparative analysis: ROCm versus CUDA and OpenCL
- Architectural features and capabilities of ROCm and HIP
- Operational differences: ROCm on Windows compared to ROCm on Linux
Installation
- Procedure for installing ROCm on the Windows operating system
- Verification of installation integrity and assessment of device compatibility
- Protocols for updating or removing ROCm from Windows environments
- Resolution of frequent installation anomalies
Getting Started
- Initiating a new ROCm project utilizing Visual Studio Code on Windows
- Examination of project directory structure and constituent files
- Compilation and execution of the application
- Generation of output logs using printf and fprintf functions
ROCm API
- Integration of the ROCm API within host-side applications
- Interrogation of device specifications and computational capabilities
- Allocation and release of device memory resources
- Transfer of data between host and device memory spaces
- Kernel dispatch and thread synchronization procedures
- Implementation of error handling and exception management
HIP Language
- Application of the HIP language within device-side code
- Development of kernels for GPU execution and data manipulation
- Utilization of data types, qualifiers, operators, and expressions
- Employment of built-in functions, variables, and library resources
ROCm and HIP Memory Model
- Management of distinct memory spaces, including global, shared, constant, and local
- Utilization of memory objects such as pointers, arrays, textures, and surfaces
- Configuration of memory access modes, including read-only, write-only, and read-write
- Application of the memory consistency model and synchronization protocols
ROCm and HIP Execution Model
- Application of execution structures, including threads, blocks, and grids
- Use of thread indexing functions, such as hipThreadIdx_x, hipBlockIdx_x, and hipBlockDim_x
- Implementation of block-level functions, such as __syncthreads and __threadfence_block
- Utilization of grid-level functions, such as hipGridDim_x, hipGridSync, and cooperative groups
Debugging
- Diagnostic procedures for ROCm and HIP applications on Windows
- Utilization of the Visual Studio Code debugger for variable inspection, breakpoint management, and call stack analysis
- Application of the ROCm Debugger for diagnostic analysis on AMD devices
- Utilization of the ROCm Profiler for performance analysis on AMD devices
Optimization
- Performance enhancement strategies for ROCm and HIP applications on Windows
- Application of memory coalescing techniques to maximize throughput
- Implementation of caching and prefetching strategies to mitigate latency
- Optimization of memory access patterns and bandwidth utilization via shared and local memory
- Application of profiling tools to measure execution efficiency and resource consumption
Summary and Next Steps
Requirements
- Proficiency in C/C++ programming and foundational parallel programming concepts
- Familiarity with computer architecture and memory hierarchy structures
- Competence with command-line utilities and code editors
- Knowledge of the Windows operating system and PowerShell
Target Audience
- Developers seeking to master the installation and utilization of ROCm on Windows for programming AMD GPUs and exploiting parallelism
- Developers aiming to write high-performance, scalable code compatible with various AMD devices
- Programmers interested in exploring low-level GPU programming aspects and optimizing code performance
21 Hours