Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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