加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

GPU 编程技术的发展历程及近况

发布时间:2021-12-10 13:44:51 所属栏目:PHP教程 来源:互联网
导读:前言 本文通过介绍 GPU 编程技术的发展历程,让大家初步地了解 GPU 编程,走进 GPU 编程的世界。 冯诺依曼计算机架构的瓶颈 曾经,几乎所有的处理器都是以冯诺依曼计算机架构为基础的。该系统架构简单来说就是处理器从存储器中不断取指,解码,执行。 但如今

前言
      本文通过介绍 GPU 编程技术的发展历程,让大家初步地了解 GPU 编程,走进 GPU 编程的世界。
 
冯诺依曼计算机架构的瓶颈
       曾经,几乎所有的处理器都是以冯诺依曼计算机架构为基础的。该系统架构简单来说就是处理器从存储器中不断取指,解码,执行。
 
       但如今这种系统架构遇到了瓶颈:内存的读写速度跟不上 CPU 时钟频率。具有此特征的系统被称为内存受限型系统,目前的绝大多数计算机系统都属于此类型。
 
       为了解决此问题,传统解决方案是使用缓存技术。通过给 CPU 设立多级缓存,能大大地降低存储系统的压力:
 
 
 
      然而随着缓存容量的增大,使用更大缓存所带来的收益增速会迅速下降,这也就意味着我们要寻找新的办法了。
 
对 GPU 编程技术发展具有启发意义的几件事
1. 70年代末期,克雷系列超级计算机研制成功 (克雷1当年耗资800万美元)。
 
      此类计算机采用若干内存条的共享内存结构,即这些内存条可以与多个处理器相连接,从而发展成今天的对称多处理器系统 (SMD)。
 
      克雷2是向量机 - 一个操作处理多个操作数。
 
      如今的 GPU 设备的核心也正是向量处理器。
 
2. 80年代初期,一家公司设计并研制了一种被称为连接机的计算机系统。
 
      该系统具有16个 CPU 核,采用的是标准的单指令多数据 (SIMD) 并行处理。连接机通过这种设计能够消除多余的访存操作,并将内存读写周期变为原来的 1/16 。
 
3. CELL 处理器的发明
 
      这类处理器很有意思,其架构大致如下图所示:
 
 
 
      在此结构中,一个 PPC 处理器作为监管处理器,与大量的 SPE流处理器相连通,组成了一个工作流水线。
 
      对于一个图形处理过程来说,某个 SPE 可负责提取数据,另一个 SPE 负责变换,再另一个负责存回。这样可构成一道完完整整的流水线,大大提高了处理速度。
 
      顺便提一句,2010年超级计算机排名第三的计算机就是基于这种设计理念实现的,占地面积达560平方米,耗资 1.25 亿美元。
 
多点计算模型
      集群计算是指通过将多个性能一般的计算机组成一个运算网络,达到高性能计算的目的。这是一种典型的多点计算模型。
 
      而 GPU 的本质,也同样是多点计算模型。其相对于当今比较火的Hadoop/Spark集群来说:“点”由单个计算机变成了 单个SM (流处理器簇),通过网络互连变成了通过显存互连 (多点计算模型中点之间的通信永远是要考虑的重要问题)。
 
GPU 解决方案
      随着 CPU "功耗墙" 问题的产生,GPU 解决方案开始正式走上舞台。
 
      GPU 特别适合用于并行计算浮点类型的情况,下图展示了这种情况下 GPU 和 CPU 计算能力的差别:
 
 
 
       但这可不能说明 GPU 比 CPU 更好,CPU应当被淘汰。 上图的测试是在计算可完全并行的情况下进行的。
 
      对于逻辑更灵活复杂的串行程序,GPU 执行起来则远不如 CPU 高效 (没有分支预测等高级机制)。
 
      另外,GPU 的应用早已不局限于图像处理。事实上 CUDA 目前的高端板卡 Tesla 系列就是专门用来进行科学计算的,它们连 VGA 接口都没。
 
几款新的显卡及其配置 (仅列 N 卡)
 
 
      注:
 
      1. 各参数的具体含义将在以后的文章中做细致分析
 
      2. 当前显卡的具体参数信息可通过调试工具获取到 (方法略)
 
主流 GPU 编程接口
      1. CUDA
 
      是英伟达公司推出的,专门针对 N 卡进行 GPU 编程的接口。文档资料很齐全,几乎适用于所有 N 卡。
 
      本专栏讲述的 GPU 编程技术均基于此接口。
 
      2. Open CL
 
      开源的 GPU 编程接口,使用范围最广,几乎适用于所有的显卡。
 
      但相对 CUDA,其掌握较难一些,建议先学 CUDA,在此基础上进行 Open CL 的学习则会非常简单轻松。
 
      3. DirectCompute
 
      微软开发出来的 GPU 编程接口。功能很强大,学习起来也最为简单,但只能用于 Windows 系统,在许多高端服务器都是 UNIX 系统无法使用。
 
      总结,这几种接口各有优劣,需要根据实际情况选用。但它们使用起来方法非常相近,掌握了其中一种再学习其他两种会很容易。
 
学习 GPU 编程的意义
      1. 不单能学会如何使用 GPU 解决问题,更让我们更加深入地了解并行编程思想,为以后全面地掌握各种并行技术打下铺垫。
 
      2. 并行计算相关知识的研究与发展势必会成为未来IT业界与学界的一大热点。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读