課程簡介

简介

  • 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 時間:

人數


每位參與者的報價

Upcoming Courses

課程分類