大数据
据英特尔预测,全球数据总量在2020年将达到44ZB(1ZB=10亿TB=1万亿GB),而单单中国产生的数据量将达到8ZB,大约占据全球总数据量的五分之一。目前,随着云计算、大数据、物联网等技术产业的快速发展,数据流量增长速率正在不断加快,数据中心承载的压力也越来越大。
从大众日常生活的方面来看,社交、搜索、电商、移动APP这些领域都在不断产生流量。据统计,自2012年至今,每年的数据总量年增长率均在50%左右。以文字为主的形式正在逐渐被视频影音取代,这也是促成流量快速增长的一大原因。众多新兴应用和服务的出现,使得数据中心的重要性日益凸显。
为什么需要异构计算
原因很简单:我们需要越来越强大、越来越高效的计算系统。在过去,随着半导体技术的进步和频率的提升,绝大多数计算机并不需要结构性的变化,或者特定的硬件加速,即可不断提升性能,但是现代应用经常会碰到内存、功耗方面的限制,导致计算力的瓶颈。引入特定的单元让计算系统变成混合结构成为了必然,每一种不同类型的计算单元都可以执行自己最山擅长的任务。
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的计划。
一个典型的异构计算平台
于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的相互作用
FPGA VS GPU
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
FPGA单位能耗处理信息能力更强