感谢您发送咨询!我们的团队成员将很快与您联系。
感谢您发送预订!我们的团队成员将很快与您联系。
课程大纲
简介
- 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 小时