联系我们
 课程时长 28 小时

课程大纲

介绍

  • 什么是OpenCL?
  • OpenCL与CUDA及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扩展和库,如原子操作、图像、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程序中的常见错误和缺陷
  • 使用Visual Studio Code调试器检查变量、断点、调用栈等
  • 使用CodeXL调试和分析AMD设备上的OpenCL程序
  • 使用Intel VTune调试和分析Intel设备上的OpenCL程序
  • 使用NVIDIA Nsight调试和分析NVIDIA设备上的OpenCL程序

优化

  • 理解影响OpenCL程序性能的因素
  • 使用OpenCL向量数据类型和向量化技术提高算术吞吐量
  • 使用OpenCL循环展开和循环分块技术减少控制开销并提高局部性
  • 使用OpenCL局部内存和局部内存函数优化内存访问和带宽
  • 使用OpenCL性能分析和性能分析工具衡量并改进执行时间和资源利用率

要求

  • 理解C/C++语言和并行编程概念
  • 具备计算机架构和内存层次结构的基本知识
  • 有使用命令行工具和代码编辑器的经验

目标受众

  • 希望学习使用OpenCL编程异构设备并利用其并行性的开发者
  • 希望编写可在不同平台和设备上运行的可移植且可扩展代码的开发者
  • 希望探索异构编程底层细节并优化代码性能的程序员

即将举行的公开课程

课程分类