选择physx处理器 gpu 计算 matlab 计算_异构计算=未来?一文带你秒懂3大主流异构...

6e6e83cb-fd18-eb11-8da9-e4434bdf6706.gif

796e83cb-fd18-eb11-8da9-e4434bdf6706.png

作者:Pasca

来源:蛋蛋团(ID:dandan_tuan)

7b6e83cb-fd18-eb11-8da9-e4434bdf6706.png 806e83cb-fd18-eb11-8da9-e4434bdf6706.png

本文旨在梳理和科普,让读者了解异构计算的基本概念和其中不同异构计算方案的侧重点,更多资讯请关注蛋蛋团(ID:dandan_tuan)。

大纲

一、传统计算的困境

二、异构计算的崛起

三、”厨房论“异构计算

四、总结

806e83cb-fd18-eb11-8da9-e4434bdf6706.png一、传统计算的困境

广为流传的摩尔定律(英特尔(Intel)创始人之一戈登·摩尔提出)表明:每24个月会将芯片的性能提高一倍。

后来,另外一个英特尔首席执行官大卫·豪斯(David House)提出:预计18个月会将芯片的性能提高一倍。

926e83cb-fd18-eb11-8da9-e4434bdf6706.jpeg

尽管到目前为止,芯片的发展经历一次次的性能提升。但随着互联网的爆炸式发展和信息化的普及。以及近几年兴起的诸如机器学习、深度学习、人工智能、工业仿真等对计算性能的需求极高的领域崛起后,已经远远超过了传统CPU处理器的除计算性能瓶颈,出现了诸多如并行度不高、带宽不够、时延高等限制。

546f83cb-fd18-eb11-8da9-e4434bdf6706.png

(来源网络,CPU和GPU的发展趋势对比,)

如上图,GPU的发展比CPU更为迅猛,每一代制程缩减直接带来更多的核心数,同时,GPU 每年有大约40% 的性能提升。

传统CPU芯片计算可以叫同构计算,也可以叫通用计算,设计之初,更多的是注重控制。而GPU设计作为协处理器只为处理CPU难以负载的大量并行计算。

而CPU占据70%的部分晶体管是用来构建Cache还有一部分控制单元,负责逻辑算数的部分并不多。GPU整个就是一个庞大的计算阵列,适合做大量密集型计算类型,就好游戏爱好者,如果想要体验画质更高的游戏画面,就必须买更好GPU的显卡。

总结一下,CPU负责逻辑性强的事物处理和串行计算,GPU则专注于执行高度线程化的并行处理任务(大规模计算任务)。

576f83cb-fd18-eb11-8da9-e4434bdf6706.jpeg

(来源网络,CPU和GPU架构比较)

通俗一点,CPU好比于笔,你可以拿他画你任何想画的东西。而GPU好比于打印机,打印肯定更快,但是需要CPU的协同。

二、异构计算的崛起

5c6f83cb-fd18-eb11-8da9-e4434bdf6706.jpeg

在普通服务器领域亦如此,针对机器学习、深度学习、人工智能、工业仿真等领域,异构计算平台已经成为新宠,而在异构计算江湖中,也是群雄鼎力,存在着三大不同的流派。

CPU+GPU流派、CPU+FPGA流派以及CPU+ASIC流派。

706f83cb-fd18-eb11-8da9-e4434bdf6706.jpeg

首先我们来讲个小故事,通俗易懂的了解这些流派。

三、”厨房论“异构计算

上文也说了,同构计算或者说通用计算性能的发展已经远远跟不上应用的需求,如近几年的国内的天河2A和神威超算都属于异构超算,接下来几年研发的超算也都属于异构超算,可见,异构超算已经成为中美两国超算领域的趋势。

这里我们引用网上的一个经典“厨房论”异构计算。

在饭店的厨房,通常会有一个大厨(CPU),它会做各种菜(兼容性极好),但是如果做菜之前的大量重复动作(洗菜、切菜)导致它一天做菜的份数明显减少。

并且,由于最近(人工智能时代到来)客人点菜要求越来越高(花样菜式),大厨开始不堪负重。

786f83cb-fd18-eb11-8da9-e4434bdf6706.jpeg

836f83cb-fd18-eb11-8da9-e4434bdf6706.jpeg

本来顾客大多要的「炒白菜」,现在一个个都想吃「开水白菜」。

一道是家常菜,一道是国宴菜。然而后者复杂程度(大量数据复杂处理)远远不是前者所能比较。 

于是,大厨想着,一大菜我一个做着麻烦,但是我可以请个帮手(协处理器)。比如在切菜方面,这个帮手可以同时处理很多菜品(并行计算),而且很熟练,速度很快(低延时)。

于是,一个负责切菜,一个负责做菜,分工明确。 当然,大厨挑选这个帮手也是精挑细选,主要体现在以下方面:

  1. 多样的菜品处理能力,如洗菜切菜一体化(算法性能)——协处理器需要能全面支持需要用到的场景关键算法。

  2. 支持同时、快速加工(数据并行和低延时处理能力)——协处理器需要有大量并行通道,且每个通道支持低延时的数据处理。

  3. 便于大厨操作和菜品存取(接口性能)——和主处理器很方便的数据交互

  4. 学习能力强,新菜式也能学会(配置灵活)——协处理器可以针对计算需求升级迭代

  5. 一天别吃太多(功耗低)——协处理器更低的功耗意味着更低的运行成本,更小的空间占用和更简单的热处理方案。

GPU:手脚麻利但是比较笨的帮厨

CPU和GPU都属于通用处理器,但是和CPU一样,都有一个很大的缺点,CPU和GPU的代码都存在Memory这个“菜谱”中,需要经过取指令,译码,然后才能执行指令。在这个流程中,取指令,译码会开销额外的时间,降低了数据处理速度。

906f83cb-fd18-eb11-8da9-e4434bdf6706.png

如果说CPU大厨形容为“头脑发达(控制电路多),四肢简单(计算电路少),那么GPU帮厨正好相反。

在GPU中,硬件资源被大量用作逻辑运算单元(ALU),小部分用作控制电路。这为大规模的数据并行处理提供了基础。 

于是,当这个帮厨(GPU)被使唤去切菜洗菜时,手脚非常麻利,完成的又快又好。但是如果你让这个帮厨(GPU)去做“土豆切丝,洋葱切片,南瓜雕花……”,可能就没有那么利索了。

这是因为,复杂的控制流程会产生大量的分支(如编程语言中的case和if else),而GPU中一个控制单元要负责好几个计算单元。所以,如果要最大程度地使用GPU,势必要求控制分支越少越好。

FPGA: 功能多变的万能料理机

在厨房中,有一种厨具我相信有很多人都会喜欢,大厨也喜欢,那就是料理机。

有了料理机,大厨终于有可以节省了大量的时间来包饺子了,使用料理机处理肉馅即可。同时,当有需要制作果汁、豆浆时,也可以使用料理机,作为一款多功能料理机,可以满足大厨的多种需求。

9a6f83cb-fd18-eb11-8da9-e4434bdf6706.png

FPGA作为一种高性能、低功耗的可编程芯片,中文名叫做”现场可编程门级列阵“。

最耀眼的词语:可编程。

这也意味着,今天可以切土豆丝,明天切土豆片都行。 FPGA使用预建的逻辑块和可重新编程布线资源,可以让用户无需使用电路实验板或者烙铁,通过特定的软件开发计算任务,编译后就能自定义配置芯片硬件功能。

只需要OpenCL和HLS(High Level Synthesis)技术,直接把C、C++代码编译成Verilog即可。

a16f83cb-fd18-eb11-8da9-e4434bdf6706.jpeg

在处理海量数据的时候,FPGA 相比于CPU 和GPU,优势在于:FPGA计算效率比CGPU更高,FPGA更接近IO。

正因此,FPGA目前已经占据在了异构计算的主流地位。

ASIC:最强订制料理机

ASIC的中文全称是“特殊订制集成电路”。

关键词:特殊订制。

它是订制的,也意味着不需要去纠结CPU和GPU怎样分配控制资源和计算资源的问题了,想怎么分配就怎么分配。 编程语言越接近底层硬件,运行速度越快。 

ASIC的设计是直接用软件思维搭建硬件电路,所有的设计是直接建筑在物理硬件(门电路)上的。所以,ASIC不需要取指令和译码,每个时间单位都能专注于数据处理或者传输,大大提高了效能。

直接设计的硬件结构也让数据处理管线真正实现,每一级的处理结果能直接用于下一级的输入,无缝连接。在一定规则下(比如一定芯片面积和布线规则下),并行通道可以最大化叠加。在功耗方面,因为硬件利用的最大化,是所有协处理器里最小的。 

如果将协处理器按照性能排行:ASIC > FPAG > GPU。

ac6f83cb-fd18-eb11-8da9-e4434bdf6706.jpeg

然而,由于ASIC定制化,导致价格十分高昂,定制的过程漫长,并且功能定制化很难再去更改。

就好比于,大厨今天想做土豆丝,明天土豆片。不好意思,再去定制一台。 

AI算法尚处于蓬勃发展、快速迭代的今天,ASIC存在开发周期较长、需要底层硬件编程、灵活性较低等劣势,因此发展速度不及GPU和FPGA。

四、总结

以目标的发展趋势来看,三者用一句话来概括如下:

  • GPU:先发制人的“十项全能”选手,云端终端均拔头筹。

  • FPGA:“变形金刚”,算法未定型前的阶段性最佳选择。

  • ASIC:“专精职业选手”,专一决定效率,AI芯片未来最佳选择。

b06f83cb-fd18-eb11-8da9-e4434bdf6706.jpeg

(七牛云、阿里云异构实例一览)

FPGA目前由于其优点越发得到AI厂商青睐,有望在这几年承担更多的角色。

在云端主要作为GPU计算性能不足的有效补充存在;同时CPU会“变小”,从14nm,甚至是5nm,但是依旧作为控制中心存在,必不可少。 

未来芯片的发展前景取决于生态,有望统一在主流的几个软件框架下,形成云端CPU+GPU+FPGA(可选)的多芯片协同场景。

b96f83cb-fd18-eb11-8da9-e4434bdf6706.gif

点击图片即可阅读

bf6f83cb-fd18-eb11-8da9-e4434bdf6706.jpeg

c66f83cb-fd18-eb11-8da9-e4434bdf6706.png

End

cb6f83cb-fd18-eb11-8da9-e4434bdf6706.png

温馨提示

公众号新创,未能开通留言功能。

如喜欢本文,请分享到朋友圈。

如需转载,请阅读转载须知。

d46f83cb-fd18-eb11-8da9-e4434bdf6706.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值