Get in Touch

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

Number of participants


Price per participant

Upcoming Courses

Related Categories