课程大纲

介绍

  • 什么是OpenCL?
  • OpenCL 与 CUDA 与 SYCL
  • OpenCL 功能和体系结构概述
  • 设置开发环境

开始

  • 使用 Visual Studio 代码创建新的 OpenCL 项目
  • 浏览项目结构和文件
  • 编译和运行程序
  • 使用 printf 和 fprintf 显示输出

OpenCL 原料药

  • 了解 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 程序中的常见错误和错误
  • 使用 Visual Studio 代码调试器检查变量、断点、调用堆栈等。
  • 使用 CodeXL 调试和分析 AMD 设备上的 OpenCL 个程序
  • 使用英特尔 VTune 调试和分析英特尔设备上的 OpenCL 个程序
  • 使用 NVIDIA Nsight 调试和分析 NVIDIA 设备上的 OpenCL 个程序

优化

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

摘要和后续步骤

要求

  • 了解 C/C++ 语言和并行编程概念
  • 计算机体系结构和内存层次结构的基础知识
  • 具有命令行工具和代码编辑器的经验

观众

  • 希望学习如何使用 OpenCL 对异构设备进行编程并利用其并行性的开发人员
  • 希望编写可在不同平台和设备上运行的可移植和可扩展代码的开发人员
  • 希望探索异构编程的低级方面并优化其代码性能的程序员
 28 小时

人数



每位参与者的报价

客户评论 (1)

相关课程

课程分类