Get in Touch
 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

Number of participants


Price per participant

Upcoming Courses

Related Categories