欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

GPU 编程相关 简要摘录

程序员文章站 2022-03-20 21:26:10
GPU 编程可以称为异构编程,最近由于机器学习的火热,很多模型越来越依赖于GPU来进行加速运算,所以异构计算的位置越来越重要;异构编程,主要是指CPU+GPU或者CPU+其他设备(FPGA等)协同计算。当前的计算模型中,CPU主要用来进行通用计算,其更多的是注重控制,我们可以通过GPU和FPGA等做 ......

gpu 编程可以称为异构编程,最近由于机器学习的火热,很多模型越来越依赖于gpu来进行加速运算,所以异构计算的位置越来越重要;异构编程,主要是指cpu+gpu或者cpu+其他设备(fpga等)协同计算。当前的计算模型中,cpu主要用来进行通用计算,其更多的是注重控制,我们可以通过gpu和fpga等做专用的计算。

GPU 编程相关 简要摘录

cpu负责逻辑性强的事物处理和串行计算,gpu则专注于执行高度线程化的并行处理任务(大规模计算任务)

编程框架:

  • c++ amp:accelerator massive parallelism :c++的异构并行模型.
  • cuda:compute unified device architecture :显卡厂商nvidia于2007年推出的业界第一款异构并行编程框架。
  • opencl (open computing language):业界第一个跨平台的异构编程框架。它是apple领衔并联合nvidia,amd,ibm,intel等众多厂商于2008年共同推出的一个开放标准,由单独成立的非营利性组织khronos group管理。与c++ amp类似,opencl作为一个开放的标准,并不局限于某个特定的gpu厂商。

三种异构编程框架,对比来看:cuda和opencl 比 c++ amp 更接近于硬件底层,所以前两者性能较好,c++ amp 相对前两者 具有较高的易编程性;

三种框架的选择:

  • 看重易用性:c++ amp, windows 平台,c++ 本身也是一个开放的标准,目前只有微软自己做了实现;
  • 看重nvidiagpu卡上的高性能:cuda;有大厂的直接支持,cuda的开发环境也非常成熟,拥有很多函数库的支持;
  • 看重不同平台间的可移植性:opencl可能是目前最好的选择;(相对于opencl 你可能会听说过 opencv,opengl,openal 等标准)opencl 得到了很多软硬件厂商的大力支持。

异构计算中常见的组合:

通用处理器对协处理器之间,主要考虑一些几个方面:协处理器能全面支持需要用到的场景关键算法(算法性能);协处理器需要有大量并行通道,每个通道支持低延时的数据处理(数据并行和低延时处理能力);和主处理器能方便得进行数据交互(接口性能较好);协处理器可以针对计算需求升级迭代(配置灵活);协处理器更低的运行成本,更小的空间占用和更简单的热处理方案(低功耗);

  • cpu+gpu
    • GPU 编程相关 简要摘录
    • gpu 中,大量的硬件资源被用于逻辑运算单元,小部分用作控制电路,gpu中一个控制单元要负责好几个计算单元,其为大规模数据并行处理提供了基础;使用gpu做异构计算需要考虑gpu memory 和 system memory数据相关性和尽量减少异构计算过程中的控制分支;
  • cpu+fpga
    • fpga 优点:
      • 稳定性:驱动层控制硬件,减少了系统抢占带来的风险;
      • 性能:利用硬件并行的优势,打破了顺序执行的模式;硬件控制层面控制io输入和输出达到了专业需求能力;
      • 维护性高:fpga可以现场升级,无需重新设计asic所需要的时间和费用投入;
      • 成本:比定制化的asic便宜,可自定义编程使用;
  • cpu+asic
    • asic 为application specific integrated circuit, 特殊定制集成电路。编程语言越接近底层硬件,运行速度越快。
    • 性能方面:asic > fpga > gpu;
    • 缺点:由于asic 定制化,导致价格较为高昂,定制过程漫长,而且功能一旦定制就很难再去更改;

 

资源多整理自网络,保持更新,如果对您有帮助,请关注 cnblogs.com/xuyaowen