Get in Touch

Course Outline

Introduction

  • Definition and scope of GPU-based parallel computing
  • Strategic benefits of leveraging GPU acceleration
  • Technical challenges and operational trade-offs associated with GPU programming
  • Overview of major GPU programming frameworks
  • Criteria for selecting an appropriate framework for specific application requirements

OpenCL

  • Definition and standards of OpenCL
  • Assessment of OpenCL’s strengths and limitations
  • Configuration of the OpenCL development environment
  • Implementation of a fundamental vector addition program in OpenCL
  • Utilization of the OpenCL API for device inquiry, memory management, data transfer, kernel execution, and synchronization
  • Development of device-executable kernels using the OpenCL C language for data manipulation
  • Application of OpenCL built-in functions, variables, and libraries for standard computational tasks
  • Optimization of data transfer and memory access patterns using OpenCL memory spaces (global, local, constant, and private)
  • Management of parallelism via the OpenCL execution model, including work-items, work-groups, and ND-ranges
  • Diagnostics and validation of OpenCL applications using specialized tools such as CodeXL
  • Performance enhancement of OpenCL programs through techniques such as coalescing, caching, prefetching, and profiling

CUDA

  • Definition and architecture of CUDA
  • Assessment of CUDA’s strengths and limitations
  • Configuration of the CUDA development environment
  • Implementation of a fundamental vector addition program in CUDA
  • Utilization of the CUDA API for device inquiry, memory management, data transfer, kernel execution, and synchronization
  • Development of device-executable kernels using the CUDA C/C++ language for data manipulation
  • Application of CUDA built-in functions, variables, and libraries for standard computational tasks
  • Optimization of data transfer and memory access patterns using CUDA memory spaces (global, shared, constant, and local)
  • Management of parallelism via the CUDA execution model, including threads, blocks, and grids
  • Diagnostics and validation of CUDA applications using tools such as CUDA-GDB, CUDA-MEMCHECK, and NVIDIA Nsight
  • Performance enhancement of CUDA programs through techniques such as coalescing, caching, prefetching, and profiling

ROCm

  • Definition and scope of the ROCm platform
  • Assessment of ROCm’s strengths and limitations
  • Configuration of the ROCm development environment
  • Implementation of a fundamental vector addition program in ROCm
  • Utilization of the ROCm API for device inquiry, memory management, data transfer, kernel execution, and synchronization
  • Development of device-executable kernels using the ROCm C/C++ language for data manipulation
  • Application of ROCm built-in functions, variables, and libraries for standard computational tasks
  • Optimization of data transfer and memory access patterns using ROCm memory spaces (global, local, constant, and private)
  • Management of parallelism via the ROCm execution model, including threads, blocks, and grids
  • Diagnostics and validation of ROCm applications using tools such as the ROCm Debugger and ROCm Profiler
  • Performance enhancement of ROCm programs through techniques such as coalescing, caching, prefetching, and profiling

Comparison

  • Comparative analysis of features, performance metrics, and compatibility across OpenCL, CUDA, and ROCm
  • Evaluation of GPU-based solutions using standardized benchmarks and performance metrics
  • Adoption of industry best practices and optimization strategies for GPU programming
  • Analysis of current developments and future trends in GPU computing architectures

Summary and Recommended Follow-on Actions

Requirements

  • Proficiency in C/C++ programming languages and foundational concepts of parallel computing
  • Fundamental understanding of computer architecture and memory hierarchy structures
  • Competence with command-line interfaces and code editing tools

Target Audience

  • Software engineers seeking to master the implementation and comparative evaluation of various GPU programming frameworks for performance and compatibility purposes
  • Developers aiming to produce portable, scalable code capable of execution across diverse hardware platforms and device types
  • Technical staff investigating the operational trade-offs and optimization challenges inherent in GPU-based computing
 28 Hours

Number of participants


Price per participant

Upcoming Courses

Related Categories