Get in Touch

Course Outline

Introduction

  • Defining GPU programming
  • Reasons for adopting GPU programming
  • Challenges and trade-offs in GPU development
  • Overview of available frameworks and tools
  • Selecting the optimal framework and tool for your application

OpenCL

  • Understanding OpenCL
  • Advantages and disadvantages of OpenCL
  • Configuring the OpenCL development environment
  • Developing a basic OpenCL program for vector addition
  • Utilizing the OpenCL API to query device information, manage memory, transfer data, launch kernels, and synchronize threads
  • Writing device-executable kernels using the OpenCL C language
  • Using OpenCL built-in functions, variables, and libraries for common operations
  • Optimizing data transfers and memory access via OpenCL memory spaces (global, local, constant, private)
  • Controlling parallelism using the OpenCL execution model (work-items, work-groups, ND-ranges)
  • Debugging and testing OpenCL programs with tools like CodeXL
  • Optimizing OpenCL programs through coalescing, caching, prefetching, and profiling

CUDA

  • Understanding CUDA
  • Advantages and disadvantages of CUDA
  • Setting up the CUDA development environment
  • Creating a basic CUDA program for vector addition
  • Using the CUDA API to query device information, manage memory, copy data, launch kernels, and synchronize threads
  • Writing kernels in CUDA C/C++ to execute on the device and manipulate data
  • Utilizing CUDA built-in functions, variables, and libraries for standard tasks
  • Optimizing memory access using CUDA memory spaces (global, shared, constant, local)
  • Managing parallelism via the CUDA execution model (threads, blocks, grids)
  • Debugging and testing CUDA programs using CUDA-GDB, CUDA-MEMCHECK, and NVIDIA Nsight
  • Optimizing CUDA programs using techniques such as coalescing, caching, prefetching, and profiling

ROCm

  • Understanding ROCm
  • Advantages and disadvantages of ROCm
  • Configuring the ROCm development environment
  • Developing a basic ROCm program for vector addition
  • Using the ROCm API to query device information, manage memory, transfer data, launch kernels, and synchronize threads
  • Writing kernels in ROCm C/C++ to execute on the device
  • Using ROCm built-in functions, variables, and libraries for common operations
  • Optimizing memory access using ROCm memory spaces (global, local, constant, private)
  • Controlling parallelism via the ROCm execution model (threads, blocks, grids)
  • Debugging and testing ROCm programs using the ROCm Debugger and ROCm Profiler
  • Optimizing ROCm programs through coalescing, caching, prefetching, and profiling

HIP

  • Understanding HIP
  • Advantages and disadvantages of HIP
  • Setting up the HIP development environment
  • Creating a basic HIP program for vector addition
  • Writing kernels in HIP to execute on the device and manipulate data
  • Using HIP built-in functions, variables, and libraries for standard tasks
  • Optimizing memory access using HIP memory spaces (global, shared, constant, local)
  • Managing parallelism via the HIP execution model (threads, blocks, grids)
  • Debugging and testing HIP programs using the ROCm Debugger and ROCm Profiler
  • Optimizing HIP programs using techniques such as coalescing, caching, prefetching, and profiling

Comparison

  • Comparing features, performance, and compatibility across OpenCL, CUDA, ROCm, and HIP
  • Evaluating GPU program efficiency using benchmarks and metrics
  • Adopting best practices and tips for GPU programming
  • Exploring current trends and future challenges in GPU programming

Summary and Next Steps

Requirements

  • Familiarity with the C/C++ language and core parallel programming concepts
  • Fundamental understanding of computer architecture and memory hierarchy
  • Practical experience with command-line utilities and code editors

Audience

  • Developers seeking to learn the basics of GPU programming and the main frameworks and tools for developing GPU applications
  • Developers aiming to write portable and scalable code that runs across different platforms and devices
  • Programmers interested in exploring the benefits and challenges of GPU programming and optimization
 21 Hours

Number of participants


Price per participant

Upcoming Courses

Related Categories