异构计算技术从80年代中期产生,由于它能经济有效地获取高性能计算能力、可扩展性好、计算资源利用率高、发展潜力巨大,已成为并行/分布计算领域中的研究热点之一。
理想的异构计算具有如下的一些要素:
(1)它所使用的计算资源具有多种类型的计算能力,如simd、mimd、向量、标量、专用等;
(2)它需要识别计算任务中各子任务的并行性需求类型;
(3)它需要使具有不同计算类型的计算资源能相互协调运行;
(4)它既要开发应用问题中的并行性,更要开发应用问题中的异构性,即追求计算资源所具有的计算类型与它所执行的任务(或子任务)类型之间的匹配性;
(5)它追求的最终目标是使计算任务的执行具有最短时间。
异构计算的应用范围很广,几乎所有涉及巨大挑战性问题的求解都可用异构计算进行经济有效的求解。典型的应用包括图像理解、质点示踪、声束形成、气候建模、湍流对流混合模拟以及多媒体查询等。这些应用中通常都含有多种不同的计算类型的需求,因此很适合于用异构计算来进行求解。
人工智能中的异构计算是目前人工智能领域里比较盛行的一种运算模式,简单的说起来就是让CPU来负责比较复杂的运算,在计算过程中CPU还掌握整体的运算方向。而那些简单、数量巨大的计算则交给GPU来处理。异构计算“Heterogeneous Computing”是一种特殊的并行分布式计算系统。它能够经济有效地实现高计算能力,可扩展性强,能够非常高效地利用计算资源。与之相对的概念就是同构计算“Homogeneous Computing”,也就是为大家熟知的多核理念。为了突破计算算力受制于功耗的瓶颈,多核CPU技术得到越来越多的应用。强大的CPU采用越来越多的CPU内核这就是传统同构计算系统。很快人们就发现在AI人工智能和自动驾驶爆炸式增长的计算需求下,传统同构计算系统已经无法满足要求,GPU、DSP、FPGA和ASIC由于特定需求下高效性越来越多的被应用。而异构计算技术应运而生,像一个大厨将CPU、GPU、DSP、FPGA和ASIC这些优良食材制成一道融合各方口味特点的佳肴。
当前的通用CPU设计得已经很复杂,配有几十个核心,运行频率高达几GHz,每个核心有自己的独立缓存。通常CPU已具备一级、二级、三级缓存。而GPU是目前科研领域比较常用的硬件计算工具。GPU的计算核心数通常是CPU的上百倍,运行频率尽管比CPU的低,但是核心数量多,整体性能好。所以,GPU比较适合计算密集型应用,比如视频处理、人工智能等,现在传统的科学计算、工程计算等也开始越来越适合在GPU上运行。相比来说,CPU的缺点就是太通用了,数据读写、计算、逻辑等各种功能都得照顾,反而影响了计算性能。CPU-GPU协同是实现高性能计算的必要条件,称为CPU-GPU异构计算(HC,Heterogeneous Computing)。它通过将应用程序的计算密集型部分卸载到GPU来提供更高的性能,而其余代码仍然在CPU上运行,能智能地结合CPU和GPU的最佳特性以实现高计算增益,旨在将每个应用程序的需求与CPU/GPU架构的优势相匹配,并避免两个处理单元的空闲时间。需要新的优化技术来充分发挥HC的潜力并朝着百亿级性能的目标迈进。
![一文带你初步了解异构计算](https://cdn.eetrend.com/files/2023-12/%E5%8D%9A%E5%AE%A2/100577023-329028-0.png)
在设计之初需要对性能和灵活性的选择做出定位。在异构融合架构处理器设计之处就要考虑通常会考虑未来任务的性质、范围、处理器的特点和系统的整体需求。因为,指令集是软件和硬件之间的桥梁,而指令的复杂度,也就是单位计算密度(即每条指令执行时所进行的计算量)决定了软件与硬件解耦程度;如果指令复杂度越高,意味着每条指令执行时进行的计算更多,所需的硬件资源也更多,因此系统的软硬件解耦程度就越高。相反,如果指令复杂度较低,那么每条指令执行时所需的计算较少,所需的硬件资源也较少。这时,将任务放在软件上执行可能更为有效,因为这样可以更好地利用共享的硬件资源。通常,任务在CPU运行,则定义为软件运行;GPU、GPGPU、FPGA、DSA或ASIC运行,则定义为硬件加速运行。
在GPU并行编程过程中,OpenCL是一个不错的选择。OpenCL是Open Computing Language(开放式计算语言)的简称,它是第一个为异构系统的通用并行编程而产生的统一的、免费的标准。OpenCL支持由多核的CPU、GPU、Cell类型架构以及信号处理器(DSP)等其他的并行设备组成的异构系统OpenCL的出现,使得软件开发人员编写高性能服务器、桌面计算系统以及手持设备的代码变得更加快捷。OpenCL由用于编写内核程序的语言和定义并控制平台的API组成,提供了基于任务和基于数据的两种并行计算机制,使得GPU的计算不在仅仅局限于图形领域,而能够进行更多的并行计算。但是,如果通过传统的方法开发一个能够运行在异构平台(在CPU和GPU的平台)的程序是很难的。不同的厂商,不同的产品型号的GPU一般有着不一样的架构,这样要想开发出一款能够高效的能够运用不同平台的所有计算资源的软件是很难的。OpenCL的出现有效地解决了异构平台的问题。
尽管异构计算具有许多优点,但其应用也面临着一些挑战。其中最主要的挑战是如何实现任务的分配和调度,使得不同类型的计算设备能够协同工作,完成复杂的计算任务。此外,由于不同类型的计算设备之间存在着差异,数据传输和处理的过程中可能会出现延迟或者数据错误等问题,这也为系统的设计和优化带来了一定的难度。未来,异构计算技术将会更加成熟和普及,不同类型的计算设备之间的协同工作也将更加高效和精准。同时,基于异构计算技术的新型应用场景将会不断涌现,例如在自动驾驶、智慧城市、医疗健康等领域都有着广泛的应用前景。
本文转自:大盛唐电子,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。