Get in Touch
 Duration 28 hours

Course Outline

Introduction

  • Overview of ROCm
  • Introduction to HIP
  • Comparison: ROCm vs. CUDA vs. OpenCL
  • Architecture and key features of ROCm and HIP
  • Configuring the Development Environment

Getting Started

  • Initializing a new ROCm project in Visual Studio Code
  • Exploring project structure and file organization
  • Compiling and executing the program
  • Displaying output via printf and fprintf

ROCm API

  • The role of the ROCm API within the host program
  • Querying device information and capabilities using the ROCm API
  • Allocating and freeing device memory via the ROCm API
  • Transferring data between host and device using the ROCm API
  • Launching kernels and synchronizing threads with the ROCm API
  • Handling errors and exceptions using the ROCm API

HIP Language

  • The role of the HIP language within the device program
  • Writing GPU-executable kernels in HIP for data manipulation
  • Utilizing HIP data types, qualifiers, operators, and expressions
  • Employing HIP built-in functions, variables, and libraries for common operations

ROCm and HIP Memory Model

  • Distinguishing between host and device memory models
  • Working with ROCm and HIP memory spaces: global, shared, constant, and local
  • Managing ROCm and HIP memory objects such as pointers, arrays, textures, and surfaces
  • Applying ROCm and HIP memory access modes, including read-only, write-only, and read-write
  • Understanding the ROCm and HIP memory consistency model 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, e.g., hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x
  • Using ROCm and HIP block functions, e.g., __syncthreads, __threadfence_block
  • Applying ROCm and HIP grid functions, e.g., 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 with the ROCm Debugger
  • Analyzing ROCm and HIP programs on AMD devices using the ROCm Profiler

Optimization

  • Factors influencing the performance of ROCm and HIP programs
  • Enhancing memory throughput with ROCm and HIP coalescing techniques
  • Reducing memory latency via ROCm and HIP caching and prefetching methods
  • Optimizing memory access and bandwidth using ROCm and HIP shared and local memory strategies
  • Measuring and improving execution time and resource utilization with ROCm and HIP profiling tools

Summary and Next Steps

Requirements

  • Familiarity with the C/C++ language and parallel programming principles
  • Fundamental knowledge of computer architecture and memory hierarchy
  • Proficiency with command-line interfaces and code editors

Target Audience

  • Developers seeking to master the use of ROCm and HIP for programming AMD GPUs and leveraging their parallelism
  • Engineers aiming to write high-performance, scalable code compatible with various AMD devices
  • Programmers interested in exploring the low-level aspects of GPU programming to enhance code performance

Number of participants


Price per participant (excl. VAT)

Upcoming Courses

Related Categories