Get in Touch

Course Outline

Introduction

  • Definition and scope of GPU programming
  • Strategic rationale for adopting GPU programming
  • Operational challenges and trade-offs in GPU implementation
  • Overview of available frameworks and tooling ecosystems
  • Selection of appropriate frameworks and tools for specific application needs

OpenCL

  • Overview of the OpenCL standard
  • Analysis of OpenCL strengths and limitations
  • Configuration of the OpenCL development environment
  • Implementation of a foundational OpenCL program for vector addition
  • Application of the OpenCL API for device interrogation, memory management, data transfer, kernel execution, and thread synchronization
  • Development of device-executable kernels using the OpenCL C language
  • Leveraging OpenCL built-in functions, variables, and libraries for standard operations
  • Optimization of data transfer and memory access via OpenCL memory spaces (global, local, constant, private)
  • Control of parallelism through the OpenCL execution model (work-items, work-groups, ND-ranges)
  • Diagnostic and validation of OpenCL programs using tools such as CodeXL
  • Performance enhancement of OpenCL programs through coalescing, caching, prefetching, and profiling techniques

CUDA

  • Overview of the NVIDIA CUDA architecture
  • Analysis of CUDA strengths and limitations
  • Configuration of the CUDA development environment
  • Implementation of a foundational CUDA program for vector addition
  • Application of the CUDA API for device interrogation, memory management, data transfer, kernel execution, and thread synchronization
  • Development of device-executable kernels using the CUDA C/C++ language
  • Leveraging CUDA built-in functions, variables, and libraries for standard operations
  • Optimization of data transfer and memory access via CUDA memory spaces (global, shared, constant, local)
  • Control of parallelism through the CUDA execution model (threads, blocks, grids)
  • Diagnostic and validation of CUDA programs using tools such as CUDA-GDB, CUDA-MEMCHECK, and NVIDIA Nsight
  • Performance enhancement of CUDA programs through coalescing, caching, prefetching, and profiling techniques

ROCm

  • Overview of the ROCm software stack
  • Analysis of ROCm strengths and limitations
  • Configuration of the ROCm development environment
  • Implementation of a foundational ROCm program for vector addition
  • Application of the ROCm API for device interrogation, memory management, data transfer, kernel execution, and thread synchronization
  • Development of device-executable kernels using the ROCm C/C++ language
  • Leveraging ROCm built-in functions, variables, and libraries for standard operations
  • Optimization of data transfer and memory access via ROCm memory spaces (global, local, constant, private)
  • Control of parallelism through the ROCm execution model (threads, blocks, grids)
  • Diagnostic and validation of ROCm programs using tools such as the ROCm Debugger and ROCm Profiler
  • Performance enhancement of ROCm programs through coalescing, caching, prefetching, and profiling techniques

HIP

  • Overview of the HIP runtime and language
  • Analysis of HIP strengths and limitations
  • Configuration of the HIP development environment
  • Implementation of a foundational HIP program for vector addition
  • Development of device-executable kernels using the HIP language
  • Leveraging HIP built-in functions, variables, and libraries for standard operations
  • Optimization of data transfer and memory access via HIP memory spaces (global, shared, constant, local)
  • Control of parallelism through the HIP execution model (threads, blocks, grids)
  • Diagnostic and validation of HIP programs using tools such as the ROCm Debugger and ROCm Profiler
  • Performance enhancement of HIP programs through coalescing, caching, prefetching, and profiling techniques

Comparison

  • Comparative analysis of features, performance, and compatibility across OpenCL, CUDA, ROCm, and HIP
  • Assessment of GPU programs using standardized benchmarks and metrics
  • Review of best practices and strategic tips for GPU programming
  • Exploration of current and future trends and challenges in GPU programming

Summary and Next Steps

Requirements

  • Proficiency in the C/C++ language and concepts of parallel programming
  • Foundational knowledge of computer architecture and memory hierarchy
  • Practical experience with command-line interfaces and code editors

Target Audience

  • Developers seeking to acquire foundational knowledge of GPU programming and the principal frameworks for creating GPU-accelerated applications
  • Developers aiming to write portable and scalable code capable of executing across diverse platforms and devices
  • Programmers interested in exploring the operational benefits and technical challenges of GPU programming and optimization
 21 Hours

Number of participants


Price per participant

Upcoming Courses

Related Categories