通俗读懂:什么是异构计算?


通俗读懂:什么是异构计算?


异构计算主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式 。异构计算已经无处不在,从超算系统到桌面到云到终端,都包含不同类型指令集和体系架构的计算单元,下面先从几个系统了解下异构计算超算系统 。
天河-2:包括16,000个计算节点,每个节点 2*Xeon (IveBridge)+3*Phi 。Total 3,120,000 Core,Linpack测试基准为33.86 petaFLOPS,Power 17.6 megawatts 。编程框架:OpenMC/OpeMP 。
Mac Pro: Intel Xeon E5 (6/8/2 cores) + Dual AMD FirePro D500 GPU (1526 stream processors, 2.2 teraflops, 3-way 4k video) 。编程框架:CUDA、OpenCL、Metal 。
Amazon Linux GPU Instances g2.8xlarge: 4 GPU (each with 1,536 CUDA cores and 4 GB of video memory and the ability to 4* 1080p@30fps), 32 vCPU。编程框架:CUDA,OpenCL 。
Qualcomm Snapdragon 820 : octa-core CPU+ Adreno 530 GPU+ Hexagon 680 DSP,编程框架:MARE,OpenCL 。
显然,异构计算系统包含了不同异构计算单元,如CPU、GPU、DSP、ASIC、FPGA等 。除了异构硬件单元,不同异构计算平台采用的编程框架也不尽相同 。那么,为什么要用异构计算?
异构计算优势主要提现在性能、性价比、功耗、面积等指标上,在特定场景,异构计算往往会表现出惊人的计算优势 。
Google Brain:1,000台服务器 (16,000 CPU核) 模拟simulating a model of the brain with a billion synapses.
Nvidia:three GPU-accelerated servers: 12 GPUs in total, 18,432 CUDA processor cores.
The Nvidia solution uses 100 times less energy, and a 100 times less cost.
关于GPU和CPU的详细分析和对比,请参考文章:GPU技术的现在和ASIC的未来、谈谈GPU和CPU为何不同和GPU关键参数和应用场景 。
除OpenCL之外,还有很多编程框架?异构并行计算框架是充分发挥异构硬件性能和屏蔽硬件差异的关键,但目前业界不存在一个统一标准 。
OpenCL是业界主流公司推动的异构并行计算编程标准 。OpenCL属于性能层,业界很多产能层框架对接OpenCL 。
Intel、ARM、高通的异构硬件均支持OpenCL软件设计 。
Intel Xeon+FPGA异构芯片支持OpenCL 。
Nvidia CUDA、Apple Metal是针对各自异构硬件设计的计算私有框架,是封闭系统,但都有广泛的开发者支持 。CUDA和OpenCL在设计理念上非常相近,但Nvidia GPU性能业界最强,有能力通过CUDA绑定用户,比如深度学习上Nvidia GPU效果最好,开发者只能选择CUDA 。
异构硬件的一个趋势是SOC上集成多种异构硬件 。比如高通820芯片集成了ARM64+GPU+DSP等多种形态 。
但传统的计算框架只针对一种硬件设计,无法支持多形态 。
高通设计了Symphony异构并行计算框架来发挥多形态异构硬件性能,同时适应未来芯片的演进 。
OpenCL异构编程技术得到各大厂家的大力支持,可屏蔽异构硬件与OS差异,简化异构核编程复杂度,OpenCL由苹果提出,得到业界大多数厂商的支持:如Nvidia、Apple、AMD、ARM、INTEL、TI等等,支撑GPGPU、DSP、FPGA等通用硬件加速器 。
优势:OpenCL是针对GPGPU大规模数据并行的特性所开发的底层编程框架,屏蔽各厂商GPU之间的差异,与芯片设计协同演进,C语言的扩展 。
不足:性能的可移植性不足 。
通俗读懂:什么是异构计算?


OpenCL编程模型中隐含了很多的硬件特征,比如并行粒度、内存模型、存储层次、资源粒度、内存带宽和延迟、ISA差异等,这导致不同的加速器上的OpenCL代码都要重新思考上述特征 。
随着FPGA的广泛使用,成本逐步降低,作为软件定义实现快速在线指令优化,对整个编译器、运行框架、OS产生巨大影响 。新架构对软件的挑战:

推荐阅读