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

Number of participants


Price per participant (excl. VAT)

Upcoming Courses

Related Categories