Get in Touch
 Duration 28 hours

Course Outline

Introduction

  • Defining GPU programming
  • The benefits of adopting GPU programming
  • Understanding the challenges and trade-offs involved in GPU programming
  • Overview of available frameworks for GPU programming
  • Selecting the appropriate framework for your specific application

OpenCL

  • An overview of OpenCL
  • Advantages and disadvantages of using OpenCL
  • Configuring the development environment for OpenCL
  • Developing a basic OpenCL application for vector addition
  • Using the OpenCL API to query device info, manage memory, transfer data, launch kernels, and synchronize threads
  • Using OpenCL C to write kernels that execute on the device and manipulate data
  • Utilizing OpenCL built-in functions, variables, and libraries for common operations
  • Optimizing data transfers and memory access using OpenCL memory spaces (global, local, constant, private)
  • Managing parallelism using the OpenCL execution model (work-items, work-groups, and ND-ranges)
  • Debugging and testing OpenCL programs with tools like CodeXL
  • Optimizing OpenCL programs through coalescing, caching, prefetching, and profiling

CUDA

  • An overview of CUDA
  • Advantages and disadvantages of using CUDA
  • Configuring the development environment for CUDA
  • Developing a basic CUDA application for vector addition
  • Using the CUDA API to query device info, manage memory, transfer data, launch kernels, and synchronize threads
  • Using CUDA C/C++ to write kernels that execute on the device and manipulate data
  • Utilizing CUDA built-in functions, variables, and libraries for common operations
  • Optimizing data transfers and memory access using CUDA memory spaces (global, shared, constant, local)
  • Managing parallelism using the CUDA execution model (threads, blocks, and grids)
  • Debugging and testing CUDA programs with tools like CUDA-GDB, CUDA-MEMCHECK, and NVIDIA Nsight
  • Optimizing CUDA programs through coalescing, caching, prefetching, and profiling

ROCm

  • An overview of ROCm
  • Advantages and disadvantages of using ROCm
  • Configuring the development environment for ROCm
  • Developing a basic ROCm application for vector addition
  • Using the ROCm API to query device info, manage memory, transfer data, launch kernels, and synchronize threads
  • Using ROCm C/C++ to write kernels that execute on the device and manipulate data
  • Utilizing ROCm built-in functions, variables, and libraries for common operations
  • Optimizing data transfers and memory access using ROCm memory spaces (global, local, constant, private)
  • Managing parallelism using the ROCm execution model (threads, blocks, and grids)
  • Debugging and testing ROCm programs with tools like ROCm Debugger and ROCm Profiler
  • Optimizing ROCm programs through coalescing, caching, prefetching, and profiling

Comparative Analysis

  • Comparing the features, performance, and compatibility of OpenCL, CUDA, and ROCm
  • Evaluating GPU programs using benchmarks and key metrics
  • Best practices and expert tips for GPU programming
  • Exploring current and future trends and challenges in GPU programming

Summary and Next Steps

Requirements

  • Proficiency in C/C++ programming and a solid grasp of parallel programming concepts
  • Fundamental understanding of computer architecture and memory hierarchy
  • Familiarity with command-line interfaces and code editors

Target Audience

  • Developers seeking to master various GPU programming frameworks and compare their features, performance, and compatibility
  • Developers aiming to write portable and scalable code capable of running across diverse platforms and devices
  • Programmers interested in exploring the trade-offs and complexities inherent in GPU programming and optimization

Number of participants


Price per participant

Upcoming Courses

Related Categories