异构时代来临——OpenCL

大数据

据英特尔预测,全球数据总量在2020年将达到44ZB(1ZB=10亿TB=1万亿GB),而单单中国产生的数据量将达到8ZB,大约占据全球总数据量的五分之一。目前,随着云计算、大数据、物联网等技术产业的快速发展,数据流量增长速率正在不断加快,数据中心承载的压力也越来越大。

从大众日常生活的方面来看,社交、搜索、电商、移动APP这些领域都在不断产生流量。据统计,自2012年至今,每年的数据总量年增长率均在50%左右。以文字为主的形式正在逐渐被视频影音取代,这也是促成流量快速增长的一大原因。众多新兴应用和服务的出现,使得数据中心的重要性日益凸显。

异构时代来临——OpenCL_第1张图片

为什么需要异构计算

原因很简单:我们需要越来越强大、越来越高效的计算系统。在过去,随着半导体技术的进步和频率的提升,绝大多数计算机并不需要结构性的变化,或者特定的硬件加速,即可不断提升性能,但是现代应用经常会碰到内存、功耗方面的限制,导致计算力的瓶颈。引入特定的单元让计算系统变成混合结构成为了必然,每一种不同类型的计算单元都可以执行自己最山擅长的任务。

CPU虽然运算不行,但是擅长管理和调度,比如读取数据,管理文件,人机交互等,例程多,辅助工具也很多。

DSP相比而言管理弱了,运算加强了。这两者都是靠高主频来解决运算量的问题,适合有大量递归操作以及不便拆分的算法。

GPU管理更弱,运算更强,但由于是多进程并发,更适合整块数据进行流处理的算法

FPGA能管理能运算,但是开发周期长,复杂算法开发难度大。适合流处理算法,不管是整块数据进还是一个一个进。还有实时性来说,FPGA是最高的。前3种处理器为了避免将运算能力浪费在数据搬运上,一般要求累计一定量数据后才开始计算,产生群延时,而FPGA所有操作都并行,因此群延时可以很小。

当人工智能等海量计算力诉求到来之后,GPU、FPGA去配合CPU进行计算的使命就自然而然的产生了。

虽然CPU主频最高,但是单颗也就8核,16核的样子,一个核3.5G,16核也就56G,再考虑指令周期,每秒最多也就30G次乘法。还是定点的。

DSP虽然主频不如cpu,但是胜在乘法器多,随随便便带16个乘法器,还是浮点的。再来个4核,8核,还有特定的算法硬件加速,所以虽然主频只有1,2g但是运算能力还是比cpu强。当然现在出现了带专用乘法器的CPU,DSP也集了ARM核,这两个的界限开始模糊了。

GPU的主频一般在500MHz左右,但是核多啊,比如titan,有380多个流处理单元,500*400就是200G这个量级,远大与于前面2者了。

FPGA的运算能力的,拿高端的来说。,3000多个固定乘法器,拿数字逻辑还能搭3000个,最快能到接近300MHz, 也就是1800G这个量级。

大数据的处理平台

众所周知,处理数据的第一大平台就是CPU,大家手头上的笔记本电脑、PC机,就是一个数据处理平台。再进一步就是显卡,玩游戏、图像处理都离不开显卡。对于普通用户来说,最熟悉的异构计算平台就是这“CPU+GPU”的架构。这是PC机上最常见的组合,这也是得益于这些年来,各家显卡厂家、处理器厂家的军备竞赛。以英伟达、AMD为代表的GPU厂家大肆宣传GPU极大加速通用计算。各个GPU厂家都推出了适用于通用计算的GPU,GPGPU(General Perpose GPU)

在几年前,GPU还只是专门处理图形的专门的服务器或者PC的一个部件。然而通用计算的大门打开之后,GPU被导入高并行计算领域,成为了超级计算机的新核心。

APU是“Accelerated Processing Units”的简称,中文名字叫加速处理器,是AMD融聚未来理念的产品,它第一次将处理器和独显核心做在一个晶片上,协同计算、彼此加速,同时具有高性能处理器和最新支持DX11独立显卡的处理性能,大幅提升电脑运行效率,实现了CPU与GPU真正的融合。

从APU的发展来看,AMD在做的事情是让CPU和GPU彻底融为一体,无论是AMD的Llano,还是Brazos,目标都是一致的。AMD认为,CPU和GPU的融合将分为四步进行:第一步是物理整合过程(Physical Integration),将CPU和GPU集成在同一块硅芯片上,并利用高带宽的内部总线通讯,集成高性能的内存控制器,借助开放的软件系统促成异构计算。第二步称为平台优化(Optimized Platforms),CPU和GPU之间互连接口进一步增强,并且统一进行双向电源管理,GPU也支持高级编程语言。第三步是架构整合(Architectural Integration),实现统一的CPU/GPU寻址空间、GPU使用可分页系统内存、GPU硬件可调度、CPU/GPU/APU内存协同一致。第四步是架构和系统整合(Architectural & OS Integration),主要特点包括GPU计算环境切换、GPU图形优先计算、独立显卡的PCI-E协同、任务并行运行实时整合等等。

硬件的异构,需要软件进行统一  (OpenCL)

OpenCL的诞生为异构计算奠定了坚实的基础。

OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境。借助OpenCL,软件开发人员能够为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。

OpenCL最初苹果公司开发,拥有其商标权,并在与AMD,IBM,英特尔和nVIDIA技术团队的合作之下初步完善。随后,苹果将这一草案提交至Khronos Group。

2008年6月的WWDC大会上,苹果提出了OpenCL规范,旨在提供一个通用的开放API,在此基础上开发GPU通用计算软件。随后,Khronos Group宣布成立GPU通用计算开放行业标准工作组,以苹果的提案为基础创立OpenCL行业规范。5个月后的2008年11月18日,该工作组完成了OpenCL 1.0规范的技术细节。2010年6月14日,OpenCL 1.1 发布。2011年11月15日,OpenCL 1.2 发布。2013年11月19日,OpenCL 2.0发布。

OpenCL工作组的成员包括:3Dlabs、AMD、苹果、ARM、Codeplay、爱立信、飞思卡尔、华为、HSA基金会、GraphicRemedy、IBM、Imagination Technologies、Intel、诺基亚、NVIDIA、摩托罗拉、QNX、高通,三星、Seaweed、德州仪器、布里斯托尔大学、瑞典Ume大学。像Intel、NVIDIA和AMD都是这个标准的支持者,不过微软并不在其列。

天底下有事,就有FPGA的事

FPGA作为数字电路的乐高,像幽灵一样存在于各种场景里面。特别是某个行业的初始阶段,例如通信行业的早期,很多私有协议、加密、分发、无线的算法,在没有规模化的时候,实时的充当中流砥柱。

当GPU已经跑在前面的时候,加上OpenCL的到来,欢欣鼓舞。然而FPGA厂家也嗅到了OpenCL带来的新的机会。Altera在2011年11月就悄悄发布了面向FPGA的OpenCL的计划。

 

一个典型的异构计算平台

异构时代来临——OpenCL_第2张图片

于2019年4月,日本上线了Cygnus超算平台,如图所示,该平台使用了共80个节点,其中48个节点为CPU+GPU节点,32个节点为CPU+GPU+FPGA节点。从图中可知异构设备在节点的部分特点:

  • 100G光口可以直接接入FPGA,FPGA将数据处理完成后再通过PCIe传递给CPU;
  • FPGA可以独立与CPU与GPU工作,FPGA处理完数据后可以选择再通过光口将数据送出;
  • GPU与CPU不能直接与光口对接,需要通过HCA将数据通过PCIe接入;
  • 采用GPU、CPU与FPGA三总异构设备,可以根据数据特点,选择更适合的平台做运算。

 

基于Intel FPGA的OpenCL的相关说明

CPU与FPGA的相互作用

https://software.intel.com/en-us/vtune-amplifier-cookbook-analyzing-cpu-and-fpga-intel-arria-10-gx-interaction

FPGA VS GPU

1Watch this short video to learn how FPGAs provide power-efficient acceleration with far less restrictions and far more flexibility than GPGPUs. We will compare and contrast the approach to solving problems by leveraging this flexibility compared to the fixed architecture of the GPGPU

FPGA vs GPGPU (21 minutes)

https://www.intel.com/content/dam/altera-www/global/en_US/video/fpga-vs-gpu.mp4

 

(2)This paper highlights the benefits of using Intel FPGAs and the differences between FPGAs and GPUs in executing and optimizing OpenCL kernels. OpenCL on FPGAs for GPU Programmers
https://plan.seek.intel.com/PSG_WW_NC_LPOI_EN_2018_AccelewareOpenCL-EN_C-MKA-907_T-MKA-917

 

为什么在FPGA上使用OpenCL

This paper highlights the benefits of utilizing OpenCL with Intel FPGAs over other hardware architectures and traditional methods of FPGA development.

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/wp/wp-01173-opencl.pdf

 

异构时代来临——OpenCL_第3张图片

FPGA单位能耗处理信息能力更强

 

你可能感兴趣的:(OpenCL)