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.
課程簡介
简介
- OpenCL是什么?
- OpenCL vs CUDA vs SYCL
- OpenCL的功能和架构概述
- 设置开发环境
入门
- 使用Visual Studio Code创建一个新的OpenCL项目
- 探索项目结构和文件
- 编译和运行程序
- 使用printf和fprintf显示输出
OpenCL API
- 理解OpenCL API在主机程序中的作用
- 使用OpenCL API查询设备信息和功能
- 使用OpenCL API创建上下文、命令队列、缓冲区、内核和事件
- 使用OpenCL API排队命令,如读取、写入、复制、映射、解映射、执行和等待
- 使用OpenCL API处理错误和异常
OpenCL C
- 理解OpenCL C在设备程序中的作用
- 使用OpenCL C编写在设备上执行并操作数据的内核
- 使用OpenCL C数据类型、限定符、操作符和表达式
- 使用OpenCL C内置函数,如数学、几何、关系等
- 使用OpenCL C扩展和库,如atomic、image、cl_khr_fp16等
OpenCL内存模型
- 理解主机和设备内存模型的区别
- 使用OpenCL内存空间,如全局、局部、常量和私有
- 使用OpenCL内存对象,如缓冲区、图像和管道
- 使用OpenCL内存访问模式,如只读、只写、读写等
- 使用OpenCL内存一致性模型和同步机制
OpenCL执行模型
- 理解主机和设备执行模型的区别
- 使用OpenCL工作项、工作组和ND范围定义并行性
- 使用OpenCL工作项函数,如get_global_id、get_local_id、get_group_id等
- 使用OpenCL工作组函数,如barrier、work_group_reduce、work_group_scan等
- 使用OpenCL设备函数,如get_num_groups、get_global_size、get_local_size等
调试
- 理解OpenCL程序中的常见错误和bug
- 使用Visual Studio Code调试器检查变量、断点、调用栈等
- 使用CodeXL调试和分析AMD设备上的OpenCL程序
- 使用Intel VTune调试和分析Intel设备上的OpenCL程序
- 使用NVIDIA Nsight调试和分析NVIDIA设备上的OpenCL程序
优化
- 理解影响OpenCL程序性能的因素
- 使用OpenCL向量数据类型和向量化技术提高算术吞吐量
- 使用OpenCL循环展开和循环平铺技术减少控制开销并增加局部性
- 使用OpenCL局部内存和局部内存函数优化内存访问和带宽
- 使用OpenCL分析和分析工具测量并改进执行时间和资源利用率
总结与下一步
最低要求
- 理解C/C++语言和并行编程概念
- 具备计算机架构和内存层次结构的基础知识
- 有使用命令行工具和代码编辑器的经验
受众
- 希望学习如何使用OpenCL编程异构设备并利用其并行性的开发者
- 希望编写可移植且可扩展代码的开发者,代码能够在不同平台和设备上运行
- 希望探索异构编程的低层细节并优化代码性能的程序员
28 時間: