GPU的历史很短,只有十几年。但它发展迅猛,凭借强大的并行计算能力和高效率的固定硬件单元,在人工智能、虚拟和增强现实(VR/AR)、3D游戏、视频编解码等领域大显身手。而且这种趋势还在延续,基于GPU的应用和创新势头正猛。
但是从系统架构来看,针对GPU的架构转型还在进行过程中,目前GPU依然还处于外设的地位,还没有摆脱从属身份。因为这个根本特征,对GPU编程并不像对CPU编程那样直接,而调试和优化GPU程序的难度就更大了,要比CPU程序复杂很多。
本研习班从GPU的发展简史入手,沿着GPU的发展历程,从内部结构、硬件接口和软件接口三个维度螺旋推进,深入解析GPU编程的知识要点和难点。硬件方面,以NVIDIA、AMD、INTEL和ARM四大阵营的GPU产品为例,揭秘GPU的内部架构和执行逻辑,解读其强大并行能力的底层实现。软件方面,深入解析OpenVX、OpenCL、CUDA、DirectX和OpenGL等编程接口,以及LINUX和Windows操作系统下的软件栈,包括DRM和WDDM驱动模型、厂商驱动程序等,并介绍优化和调试GPU程序的常用工具和方法。具体由以下12个主题讲解和6个动手试验组成。
时间:2017年12月15日- 12月17日(周五-周日)(三天两晚封闭训练,挑灯论剑)
地点:庐山秀峰景区内松雪楼(住)和中正行营(研习)
形式:实战演练、讲解和讨论点评
培训对象:使用GPU进行通用计算和图形加速的软件工程师(开发和测试)、技术经理和科研人员
主办单位:高端调试网站、上海曜印网络科技有限公司
序言:三轮演进 (0.5小时)
要点:VGA、硬件加速、2D加速和3D加速,从可配置到可编程,GPGPU,GPU的四大功能模块,具有里程碑性的产品,TVGA、Voodoo、GeForce 256,G80,HD 7900和HSA
-----N篇-----
第一部分:在CUDA-GDB理解CUDA基础(1.5小时)
要点:CUDA简要历史,CUDA的C扩展,kernel函数,WARP,CUDA的线程组织,准备调试环境,单GPU调试和多GPU调试,远程调试,nvcc,-G和-g选项,附加到已经运行的进程,启用kernel初始断点,观察源代码和汇编指令,设置断点,单步跟踪,条件断点,观察CUDA的内建变量,理解grid、block和thread,Grid-StrideLoops,观察GPU线程,观察GPU的调用栈,观察GPU的寄存器,观察错误信息,产生GPU转储(core dump)
试验1:熟悉CUDA-GDB的基本用法
编译并调试一个CUDA程序,练习常用的CUDA-GDB扩展命令,理解CUDA编程的关键概念
第二部分:使用NSight调试CUDA程序(1.5小时)