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个动手试验组成。
时间:2018年1月19日- 12月21日(周五-周日)
地点:上海
形式:实战演练、讲解和讨论点评
培训对象:使用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