Get in Touch

Course Outline

Introduction

  • What is GPU programming?
  • Why use GPU programming?
  • What are the challenges and trade-offs of GPU programming?
  • What frameworks exist for GPU programming?
  • Selecting the appropriate framework for your application

OpenCL

  • What is OpenCL?
  • What are the advantages and disadvantages of OpenCL?
  • Setting up the development environment for OpenCL
  • Creating a basic OpenCL program that performs vector addition
  • Using the OpenCL API to query device information, allocate and deallocate device memory, copy data between host and device, launch kernels, and synchronize threads
  • Using OpenCL C language to write kernels that execute on the device and manipulate data
  • Using OpenCL built-in functions, variables, and libraries to perform common tasks and operations
  • Using OpenCL memory spaces, such as global, local, constant, and private, to optimize data transfers and memory accesses
  • Using the OpenCL execution model to control the work-items, work-groups, and ND-ranges that define the parallelism
  • Debugging and testing OpenCL programs using tools such as CodeXL
  • Optimizing OpenCL programs using techniques such as coalescing, caching, prefetching, and profiling

CUDA

  • What is CUDA?
  • What are the advantages and disadvantages of CUDA?
  • Setting up the development environment for CUDA
  • Creating a basic CUDA program that performs vector addition
  • Using the CUDA API to query device information, allocate and deallocate device memory, copy data between host and device, launch kernels, and synchronize threads
  • Using CUDA C/C++ language to write kernels that execute on the device and manipulate data
  • Using CUDA built-in functions, variables, and libraries to perform common tasks and operations
  • Using CUDA memory spaces, such as global, shared, constant, and local, to optimize data transfers and memory accesses
  • Using the CUDA execution model to control the threads, blocks, and grids that define the parallelism
  • Debugging and testing CUDA programs using tools such as CUDA-GDB, CUDA-MEMCHECK, and NVIDIA Nsight
  • Optimizing CUDA programs using techniques such as coalescing, caching, prefetching, and profiling

ROCm

  • What is ROCm?
  • What are the advantages and disadvantages of ROCm?
  • Setting up the development environment for ROCm
  • Creating a basic ROCm program that performs vector addition
  • Using the ROCm API to query device information, allocate and deallocate device memory, copy data between host and device, launch kernels, and synchronize threads
  • Using ROCm C/C++ language to write kernels that execute on the device and manipulate data
  • Using ROCm built-in functions, variables, and libraries to perform common tasks and operations
  • Using ROCm memory spaces, such as global, local, constant, and private, to optimize data transfers and memory accesses
  • Using the ROCm execution model to control the threads, blocks, and grids that define the parallelism
  • Debugging and testing ROCm programs using tools such as ROCm Debugger and ROCm Profiler
  • Optimizing ROCm programs using techniques such as coalescing, caching, prefetching, and profiling

Comparison

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

Summary and Next Steps

Requirements

  • Proficiency in the C/C++ language and understanding of parallel programming concepts
  • Foundational knowledge of computer architecture and memory hierarchy
  • Experience using command-line tools and code editors

Target Audience

  • Developers seeking to learn how to use various frameworks for GPU programming and compare their features, performance, and compatibility
  • Developers aiming to write portable and scalable code capable of running across different platforms and devices
  • Programmers interested in exploring the trade-offs and challenges associated with GPU programming and optimization
 28 Hours

Custom Corporate Training

Training solutions designed exclusively for businesses.

  • Customized Content: We adapt the syllabus and practical exercises to the real goals and needs of your project.
  • Flexible Schedule: Dates and times adapted to your team's agenda.
  • Format: Online (live), In-company (at your offices), or Hybrid.
Investment

Price per private group, online live training, starting from 6400 € + VAT*

Contact us for an exact quote and to hear our latest promotions

Provisional Upcoming Courses (Contact Us For More Information)

Related Categories