异构计算
- 格式:doc
- 大小:96.00 KB
- 文档页数:28
异构计算与编程引言:随着计算机科学和技术的迅速发展,人们对计算性能的需求也越来越高。
传统的计算机架构已经不能满足日益增长的计算需求,因此异构计算和编程应运而生。
本文将介绍异构计算的概念、特点以及与传统计算的区别,并探讨异构编程的优势和挑战。
一、异构计算的概念和特点异构计算是指利用不同类型的处理器和计算设备来协同工作,以提高计算系统的性能和效率。
其特点主要包括以下几个方面:1. 多样性:异构计算系统由多种不同类型的处理器和计算设备组成,如CPU、GPU、FPGA等。
每种设备都有自己的特点和优势,可以根据具体应用场景进行选择和组合。
2. 并行性:异构计算系统可以同时使用多个处理器和计算设备进行任务分解和并行处理。
这种并行性可以显著提高计算性能和效率。
3. 能效比:由于每种处理器和计算设备都有不同的能效比,异构计算系统可以根据任务的特点选择合适的设备,以达到更好的能效比。
二、异构计算与传统计算的区别相比传统计算方式,异构计算具有以下几个显著的区别:1. 计算模型不同:传统计算主要依赖于CPU进行串行计算,而异构计算则采用多设备并行计算模型,能够充分利用不同设备的性能优势。
2. 编程模型不同:传统计算通常采用单一编程模型,如C/C++,而异构计算则需要使用特定的编程模型,如CUDA和OpenCL,来实现不同设备的协同工作。
3. 数据传输开销大:由于异构计算系统中涉及多个设备,数据传输成为一个重要的问题。
相比传统计算,异构计算需要更多的数据传输,而这会带来额外的开销。
三、异构编程的优势和挑战异构编程作为实现异构计算的关键,具有一些独特的优势和挑战。
1. 优势:(1)性能提升:异构编程可以充分发挥不同设备的性能优势,提高计算系统的整体性能。
(2)能效优化:通过选择合适的设备和优化算法,异构编程可以实现更好的能效比,减少能源消耗。
(3)灵活性:异构编程可以根据不同的应用需求选择适合的设备和编程模型,提供更灵活的解决方案。
异构计算(Heterogeneous computing)摘要异构计算(Heterogeneous computing)技术从80年代中期产生,由于它能经济有效地获取高性能计算能力、可扩展性好、计算资源利用率高、发展潜力巨大,目前已成为并行/分布计算领域中的研究热点之一。
本文主要介绍了CPU+GPU基础知识及其异构系统体系结构(CUDA)和基于OpenCL的异构系统,并且总结了两种结构的特点,从而对异构计算有了更深的理解。
关键词:异构计算CUDA OpenCL1、引言异构计算主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。
常见的计算单元类别包括CPU、GPU等协处理器、DSP、ASIC、FPGA 等。
我们常说的并行计算正是异构计算中的重要组成部分异构计算近年来得到更多关注,主要是因为通过提升CPU时钟频率和内核数量而提高计算能力的传统方式遇到了散热和能耗瓶颈。
而与此同时,GPU等专用计算单元虽然工作频率较低,具有更多的内核数和并行计算能力,总体性能/芯片面积的比和性能/功耗比都很高,却远远没有得到充分利用。
CPU的设计让其比较擅长于处理不规则数据结构和不可预测的存取模式,以及递归算法、分支密集型代码和单线程程序。
这类程序任务拥有复杂的指令调度、循环、分支、逻辑判断以及执行等步骤。
而GPU擅于处理规则数据结构和可预测存取模式。
而APU的设计理念则正是让CPU和GPU完美合作,集合两者的长处,用异构计算来达到整体性能的最佳化。
目前,已经有50款领先的应用能够利用AMD APU进行加速,而后续的应用也将陆续到来——异构计算普及的一刻应该是近在咫尺了。
1.1 CPU和GPU的本质区别(1) CPU特点a) CPU的目标是快速执行单一指令流;b) CPU将其用于乱序执行、寄存器重命名、分支预测以及巨大的cache上,这些设计都是为了加速单一线程的执行速度c) CPU利用cache来降低内存访问延迟d) CPU通过大量的cache和分支预测来降低延迟,这些机制消耗了大量的晶体管的电能;e) CPU每个核心支持1~2个线程;f) CPU切换线程的代价是数百个时钟周期;g) CPU通过SIMD(单指令多数据)来处理矢量数据;h)Intel的CPU没有集成内存控制器(2)GPU特点a) GPU的目标是快速执行大量的并行指令流。
人工智能异构计算
人工智能的异构计算是指使用不同类型的指令集和体系架构的计算单元组成系统的计算方式。
与同构计算相比,异构计算能够使用不同的处理器来处理不同的任务,从而提高计算效率和性能。
在人工智能领域,常见的处理器包括CPU、GPU、FPGA和ASIC等。
这些处理器各有优缺点,比如CPU具有强大的通用性,能够处理各种复杂的逻辑和运算,但是其计算性能相对较低;而GPU则适合于大规模并行计算,适合处理图像、视频等数据。
异构计算能够将不同类型的处理器结合起来,形成一种协同计算的机制,从而提高计算效率。
比如,可以将CPU和GPU结合起来,让CPU处理复杂的逻辑和运算,而GPU则处理大规模的并行计算任务,从而实现高效的计算。
此外,异构计算还可以通过硬件加速器来实现。
硬件加速器是一种专门用于加速特定计算任务的专用硬件设备,比如深度学习芯片等。
通过将计算任务卸载到硬件加速器上,可以进一步提高计算效率和性能。
总之,人工智能的异构计算是一种高效、灵活的计算方式,能够将不同类型的处理器和硬件加速器结合起来,实现高效的计算。
随着人工智能技术的不断发展,异构计算将会成为未来人工智能领域的重要发展方向之一。
什么是异构计算?异构计算主要是指使⽤不同类型指令集和体系架构的计算单元组成系统的计算⽅式。
异构计算已经⽆处不在,从超算系统到桌⾯到云到终端,都包含不同类型指令集和体系架构的计算单元,下⾯先从⼏个系统了解下异构计算超算系统。
天河-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关键参数和应⽤场景。
异构计算的优化方法及应用随着计算机技术的不断发展,人们对于计算机的需求也在不断提高。
传统的计算机已经无法满足人们日益增长的需求,因此出现了新的计算方式——异构计算。
异构计算是利用不同结构、性能、功能的计算单元或计算系统进行计算,旨在优化计算的性能、灵活性和能源效率。
本文将重点探讨异构计算的优化方法及应用。
一、异构计算的优化方法1. 异构计算的架构异构计算的架构主要分为两种:主机与协处理器、集群和网格。
在主机与协处理器架构中,主机为整个系统的核心,协处理器则为辅助计算单元,主要负责计算密集型的任务。
集群和网格架构则是将多台计算机连接起来形成一个总体,进行计算任务分配和管理。
这种架构可以利用计算机之间的并行计算来提高整个系统的计算效率。
2. CPU+GPU异构计算架构CPU+GPU异构计算架构是目前应用最广泛的异构计算架构之一。
在这种架构中,CPU作为整个系统的核心,承担一些复杂的控制任务和少量的计算任务,而GPU则作为计算单元,主要负责计算密集型的任务。
CPU+GPU异构计算架构的优势在于可以利用GPU强大的并行计算能力来优化整个系统的性能。
3. 异构计算的编程模型异构计算的编程模型主要有两种:MPI(Message Passing Interface)和OpenCL(Open Computing Language)。
MPI主要用于集群和网格架构,并且已经在传统计算领域有广泛的应用。
OpenCL则是用于CPU+GPU异构计算架构的编程模型,主要是基于C语言的一种编程模型,可以更好地利用GPU的并行计算能力。
4. 异构计算的性能优化异构计算的性能优化主要分为两个方面:算法优化和计算资源管理。
算法优化主要是对于计算任务的优化,利用一些新的算法来提高整个系统的性能。
计算资源管理则是针对系统中的计算资源进行管理,包括了任务分配和负载均衡等。
二、异构计算的应用1. 科学计算异构计算在科学计算领域有广泛的应用,特别是在天文学、地球物理学、气象学等方面。
异构计算技术发展趋势一、异构计算技术的介绍异构计算技术是指采用不同的硬件和软件技术形式,将它们组合起来成为一台强有力的计算机系统。
异构计算技术以运用不同类型的处理器,包括GPGPU、FPGA等技术,实现各种各样的请求处理能力。
传统上,处理器(GPU)仅用于图形处理、视频渲染或高性能计算。
然而,随着GPU的开发和发展,这些硬件设备的计算能力变得越来越强大,它们可以被用于解决许多问题,其中大多数问题是跨领域的应用。
二、异构计算技术的优势1.更高的计算能力:异构计算技术可以将不同处理器的计算能力组合起来,充分利用各自的优势,提高整个计算系统的性能。
2.更高效的资源利用:资源利用方面,异构计算技术可根据处理器的实现方式对不同任务进行较好的划分,提高资源利用率。
3.更低的能源消耗:异构计算技术在进行高负载计算任务时,可以分发任务到多个处理器进行,并尝试将大量计算转移到GPU 上完成。
这样,整个计算系统的能源消耗更低。
4.更快的计算速度:异构计算技术可以同时使用不同类型的处理器,实现并行计算,提高计算速度。
5.更低的成本:由于异构计算技术可以用不同的硬件组合,因此可以根据任务的不同需要,选用成本较低的设备,在保证任务完成的情况下,降低整个计算系统的成本。
三、异构计算技术的发展趋势由于异构计算技术优势明显,它已成为科学研究和工程设计中必不可少的几个领域之一,未来它的发展方向主要有以下几个方面:1.以量子计算机为代表的新型异构计算技术近年来,各国纷纷投入大量资金,大力研发量子计算机,这是新型异构计算技术的代表。
目前量子计算机的落地还存在许多技术问题,难言这个市场很快会成熟,但是在不久的将来,量子计算机必将带来技术和产业层面的较大变革。
2.利用更多优异的处理器由于异构计算技术的优越性和可行性,我们需要不断尝试使用不同的硬件、软件技术形式。
例如ASIC、ASIC+FPGA、ASIC+GPU、FPGA+GPU、CPU+GPU等等各式各样的组合方式。
异构计算的体系结构引言异构计算是指在一个系统中同时使用不同类型的计算资源,如CPU、GPU、FPGA等,以提升计算性能和效率。
异构计算的体系结构是指支持异构计算的硬件和软件架构,它为不同计算资源的协同工作提供了基础。
本文将对异构计算的体系结构进行详细介绍。
一、异构计算的基本概念异构计算是由异构计算资源组成的系统,其中的异构计算资源指的是具有不同特性和功能的计算设备。
这些设备包括但不限于中央处理器(CPU)、图形处理器(GPU)、可编程逻辑门阵列(FPGA)等。
异构计算的基本思想是将不同类型的计算任务分配给最适合处理该任务的计算资源,以实现整体性能的提升。
二、异构计算的体系结构设计1. 硬件层面在硬件层面,异构计算的体系结构设计需要考虑以下几个方面:(1)计算资源的选择:根据应用场景和需求,选择合适的异构计算资源,如CPU、GPU、FPGA等。
(2)内存架构设计:由于不同类型的计算资源对内存的需求不同,需要设计合理的内存架构,以满足计算资源的高效利用。
(3)互联结构设计:不同计算资源之间需要进行数据交换和通信,因此需要设计高效的互联结构,以实现数据的快速传输和处理。
(4)能耗管理:异构计算系统中的计算资源种类繁多,能耗管理是一个重要的设计考虑因素,需要设计相应的策略来降低系统能耗。
2. 软件层面在软件层面,异构计算的体系结构设计需要考虑以下几个方面:(1)编程模型:为了方便开发人员利用异构计算资源进行编程,需要设计支持异构计算的编程模型,如CUDA、OpenCL等。
(2)任务调度:由于异构计算系统中的计算资源具有不同的特性和功能,任务调度需要根据不同任务的特点进行动态调整,以实现最优的性能和效率。
(3)数据管理:异构计算系统中的数据管理涉及到不同计算资源之间的数据传输和共享,需要设计相应的数据管理策略,以提高数据访问效率和减少数据传输延迟。
(4)错误处理:由于异构计算系统中的计算资源种类繁多,错误处理是一个重要的设计考虑因素,需要设计相应的错误处理机制,以保证系统的可靠性和稳定性。
什么是异构计算
异构计算是指使用不同类型或不同结构的计算资源来执行项任务或计
算任务。
它可以使用现有的硬件和软件资源,考虑到计算能力、容量和负载,以更高的效率完成任务。
异构计算可以帮助企业利用现有的技术资源,提高系统性能和可靠性,从而降低系统成本和提高性能。
异构计算是一种多样化计算技术,能够节省计算资源,改善计算能力,优化系统性能。
它支持组合不同的计算机型,比如CPU、GPU(图形处理器)、FPGA(可编程逻辑阵列)、ASIC(专用集成电路)等,充分利用分
配的每一种资源,扩展系统的能力。
它可以使各种任务以更高的处理速度
完成,从而提高系统的整体性能。
异构计算可以改善其中一应用的计算性能,这样就可以实现高性能计算。
异构计算可以改善应用性能,使大规模的计算任务可以依靠其自身解决。
异构计算还可以支持其他技术,如大数据分析和机器学习,更快实现
解决方案。
另外,异构计算还可以帮助企业改善应用的可扩展性,以适应大规模
变化的负载要求。
它能够将系统中的闲置计算机资源转换为可用的运算力,从而提高系统的可用性和可扩展性。
异构计算异构计算技术从80年代中期产生,由于它能经济有效地获取高性能计算能力、可扩展性好、计算资源利用率高、发展潜力巨大,目前已成为并行/分布计算领域中的研究热点之一。
本文还强调了未来异构计算研究应注意的一些方面。
随着通信和网络技术的迅速发展,网络计算概念应运而生。
同构网络计算系统now或cow首先兴起,接着很快涌现出异构网络计算系统,从而使异构计算近年来成为并行/分布计算领域中的主要研究热点之一。
基本概念在异构计算系统上进行的并行计算通常称为异构计算。
人们已从不同角度对异构计算进行定义,综合起来我们给出如下定义:异构计算是一种特殊形式的并行和分布式计算,它或是用能同时支持simd方式和mimd方式的单个独立计算机,或是用由高速网络互连的一组独立计算机来完成计算任务。
它能协调地使用性能、结构各异地机器以满足不同的计算需求,并使代码(或代码段)能以获取最大总体性能方式来执行。
概括来说,理想的异构计算具有如下的一些要素:(1)它所使用的计算资源具有多种类型的计算能力,如simd、mimd、向量、标量、专用等;(2)它需要识别计算任务中各子任务的并行性需求类型;(3)它需要使具有不同计算类型的计算资源能相互协调运行;(4)它既要开发应用问题中的并行性,更要开发应用问题中的异构性,即追求计算资源所具有的计算类型与它所执行的任务(或子任务)类型之间的匹配性;(5)它追求的最终目标是使计算任务的执行具有最短时间。
可见,异构计算技术是一种使计算任务的并行性类型(代码类型)与机器能有效支持的计算类型(即机器能力)最相匹配、最能充分利用各种计算资源的并行和分布计算技术。
基本原理1、异构计算系统。
它主要由以下三部分组成:(1)一组异构机器。
(2)将各异构机器连接起来的高速网络。
它可以是商品化网络,也可以是用户专门设计的。
(3)相应的异构计算支撑软件。
2、异构计算的基本工作原理。
异构计算需求在析取计算任务并行性类型基础上,将具有相同类型的代码段划分到同一子任务中,然后根据不同并行性类型将各子任务分配到最适合执行它的计算资源上加以执行,达到使计算任务总的执行时间为最小。
异构计算技术的研究与应用1. 异构计算技术的定义异构计算技术是指利用不同种类的处理器、加速器、存储器等不同种类的计算单元协同工作,从而提高计算能力、降低能耗、加速应用程序的执行速度等。
异构计算技术通过将不同性质的计算单元结合在一起,可以充分发挥各自的优势,提高计算效率,是当前计算领域的一个重要研究方向之一。
2. 异构计算技术的研究现状在异构计算技术研究方面,目前主要集中在以下几个方面的探索:(1)计算单元的异构结构设计和优化:异构计算系统中不同种类的计算单元具有不同的结构特点,如何在设计时考虑到计算单元间的数据交换和任务划分,使异构系统能够得到更好的运行效率,是目前研究的一个重要问题。
(2)异构计算系统中的数据共享和传输:由于异构计算系统中的不同计算单元结构、内部连接方式、存储器大小等存在差异,如何实现异构系统中数据的高效传输和共享,是异构计算技术研究的一个难点和瓶颈。
(3)异构计算系统的编程模型:由于异构计算系统中的不同计算单元都有各自特定的编程模型,如何实现对异构计算系统的编程是一个重要的问题。
目前,OpenCL、CUDA、HIP等编程模型逐渐成为异构计算编程的主流模型。
3. 异构计算技术的应用异构计算技术在科学计算、机器学习、图像处理、数据分析等领域都得到了广泛的应用。
以下是异构计算技术在几个领域的应用举例:(1)科学计算:异构计算技术在科学计算领域的应用非常广泛,如天体物理学、气象学、计算流体力学等。
异构计算技术可以利用GPU等高性能计算单元,提高科学计算的运算速度和精度。
(2)机器学习:随着大数据时代的到来,人工智能、机器学习等技术的发展越来越受到关注。
异构计算技术可以利用GPU或者其他加速器加速机器学习算法的计算,提高模型的训练速度和准确率。
(3)图像处理:图像处理是计算机视觉领域的重要研究方向。
异构计算技术可以利用GPU等高性能计算单元,加速图像处理算法的执行速度,提升图像处理的效果和质量。
异构计算异构计算技术从80年代中期产生,由于它能经济有效地获取高性能计算能力、可扩展性好、计算资源利用率高、发展潜力巨大,目前已成为并行/分布计算领域中的研究热点之一。
本文还强调了未来异构计算研究应注意的一些方面。
随着通信和网络技术的迅速发展,网络计算概念应运而生。
同构网络计算系统now或cow首先兴起,接着很快涌现出异构网络计算系统,从而使异构计算近年来成为并行/分布计算领域中的主要研究热点之一。
基本概念在异构计算系统上进行的并行计算通常称为异构计算。
人们已从不同角度对异构计算进行定义,综合起来我们给出如下定义:异构计算是一种特殊形式的并行和分布式计算,它或是用能同时支持simd方式和mimd方式的单个独立计算机,或是用由高速网络互连的一组独立计算机来完成计算任务。
它能协调地使用性能、结构各异地机器以满足不同的计算需求,并使代码(或代码段)能以获取最大总体性能方式来执行。
概括来说,理想的异构计算具有如下的一些要素:(1)它所使用的计算资源具有多种类型的计算能力,如simd、mimd、向量、标量、专用等;(2)它需要识别计算任务中各子任务的并行性需求类型;(3)它需要使具有不同计算类型的计算资源能相互协调运行;(4)它既要开发应用问题中的并行性,更要开发应用问题中的异构性,即追求计算资源所具有的计算类型与它所执行的任务(或子任务)类型之间的匹配性;(5)它追求的最终目标是使计算任务的执行具有最短时间。
可见,异构计算技术是一种使计算任务的并行性类型(代码类型)与机器能有效支持的计算类型(即机器能力)最相匹配、最能充分利用各种计算资源的并行和分布计算技术。
基本原理1、异构计算系统。
它主要由以下三部分组成:(1)一组异构机器。
(2)将各异构机器连接起来的高速网络。
它可以是商品化网络,也可以是用户专门设计的。
(3)相应的异构计算支撑软件。
2、异构计算的基本工作原理。
异构计算需求在析取计算任务并行性类型基础上,将具有相同类型的代码段划分到同一子任务中,然后根据不同并行性类型将各子任务分配到最适合执行它的计算资源上加以执行,达到使计算任务总的执行时间为最小。
下面通过一个简单例子来说明异构计算的基本工作原理。
假设在某一基准串行计算机上执行某一给定计算任务的时间为ts,其中向量、mimd、simd以及sisd各类子任务所占执行时间的百分比分别为30%、36%、24%和10%。
假设某向量机执行上述各类子任务相对于基准串行机的加速比分别为30、2、8和1.25,则在该向量机上执行此任务所需的总时间为tv=30%ts/30+36%ts/2+24%ts/8+10%ts/1.25=0.30ts,故相应的加速比为sv=ts/tv=ts/0.3ts=3.33若上述向量机与其他的mimd机、simd机以及一台高性能工作站(sisd型)构成一个异构计算系统,并假设mimd机、simd机以及工作站执行相匹配子任务的加速比分别为36、24和10,则在该异构计算系统上执行同样任务所需时间就变为thet=30%ts/30+36%ts/36+24%ts/24+10%ts/10+tc其中tc为机器间交互开销时间,假设需2%ts时间,则thet=0.06ts,从而相应的加速比为shet=ts/0.06ts=16.67。
由上例可见,异构计算系统可比同构计算系统获取高得多的加速比。
这主要是因为同构计算系统中的加速比只是靠并行性开发获取的,而异构计算系统中的加速比除了并行性之外,更主要的是靠开发异构性获得的(即不同类型子任务与相应类型的计算资源相匹配),尽管此时会有相应的交互开销。
交互开销越小,异构计算的优越性就越加明显。
分类异构计算按以何种形式来提供计算类型多样性,可分为系统异构计算(shc-system heterogeneous computing)和网络异构计算(nhc-network heterogeneous computing)两大类。
shc以单机多处理器形式提供多种计算类型,而nhc则以网络连接的多计算机形式提供多种计算类型。
根据异构性实现方式不同,即是空间异构性还是时间异构性,shc 和nhc各自又可进一步分为两类。
shc分为单机多计算方式和单机混合计算方式两大类,前者在同一时刻允许以多种计算方式执行任务,后者在同一时刻只允许以一种计算方式执行任务,但在不同时刻计算可从一种方式自动切换到另一种方式,如simd和mimd方式间的切换。
前者的实例有美国hughes研究实验室和mit共同研制的图像理解系统结构(iua),它是多层异构系统结构,按图像理解层次要求设计每一层,低层是simd位串网络(4096),用来处理像素级操作(如图像增强),中层是由64个数字信号处理(dsp)芯片构成的,以spmd或mimd(中粒度)方式执行模式分类等操作,顶层是一个通用mimd(粗粒度)机器,完成场景和动作分析等知识处理操作。
后者的实例为美国普渡大学研制的pasm系统原型,由16个pe(处理单元)组成的系统,它们可动态地加以划分以形成各种大小的独立的混合方式子机器,执行方式可按需要在simd和mimd之间自动切换。
nhc可进一步分为同类异型多机方式和异类混合多机方式两类。
同类异型多机方式中所使用的多机,它们的结构属同一类,即支持同一种并行性类型(如simd、mimd、向量等类型之一),但型号可能不同,因此性能可以各有差异。
通常的now或cow为同类同型多机方式,因此可看成是同类异型多机方式中的特例。
异类混合多机方式中所使用的多机,它们的结构则属不同类型。
层次结构网络异构计算系统主要由一组异构计算机、一个连接所有机器的高速网络和一个并行编程环境所组成。
逻辑上这种系统可分为三个层次:网络层、通信层和处理层。
如图1所示。
网络层主要用来连接在不同地点的计算机,如图1中的计算站a 和计算站b,并考虑其中消息传递的路由选择、网络流优化和网络排队理论等问题,这与传统的计算机网络设计类似。
通信层工作于网络层之上,主要为系统中各种不同的计算机提供能够相互通信的机制。
通信工具软件应提供使众多异构计算机集合可视为是一个单一的系统映像、单个虚拟异构并行机的机制。
这将方便用户编程。
这种通信工具通常提供一组原语来提供各种通信。
典型流行的通信工具是pvm(并行虚拟机)和mpi(消息传递标准接口)。
处理层主要用来管理异构机器组并保证任务的高效执行。
它所提供的主要服务包括编程环境和语言支持、应用任务的类型分析和任务划分、任务的映射与调度以及负载平衡等。
主要问题异构计算处理过程本质上可分为三个阶段:并行性检测阶段、并行性特征(类型)析取阶段以及任务的映射和调度阶段。
并行性检测不是异构计算特有的,同构计算也需要经历这一阶段。
可用并行和分布计算中的常规方法加以处理。
并行性特征析取阶段是异构计算特有的,这一阶段的主要工作是估计应用中每个任务的计算类型参数,包括映射及对任务间通信代价的考虑。
任务映射和调度阶段(也称为资源分配阶段)主要确定每个任务(或子任务)应映射哪台机器上执行以及何时开始执行。
从用户来看,上述的异步计算处理过程可用两种方法来实现。
第一种是用户指导法,即由用户用显式的编译器命令指导编译器完成对应用代码类型分析及有关任务的分解等工作,这是一种显式开发异构性和并行性方法,较易于实现,但对用户有一定要求,需将异构计算思想融入用户程序中。
另一种是编译器指导法,需将异构思想融入编译器中,然后由具有―异构智力‖的编译器自动完成应用代码类型分析、任务分解、任务映射及调度等工作,即实现自动异构计算。
这是一种隐式开发异构性和并行性方法,是异构计算追求的终极目标,但难度很大,对编译器要求很高。
自动异构计算的概念性模型如图2所示。
首先对两个对象进行分析,一是异构计算系统中的机器集,二是求解的应用程序。
为了获取最好的执行效果,对它们不但进行定性分析,还需进行相应的定量分析。
整个异构计算处理过程可分为以下四个阶段:第一阶段主要是对各台机器进行计算特征的分类,得出异构计算系统所能完成的计算类型;按代码块统计应用对计算特征的需求并加以分类;用基准程序测试各机器的性能参数,包括速度参数及机器间通信性能参数,生成对应的两个机器速度性能矩阵和通信带宽矩阵。
将程序按计算类型分类划分;估算各子任务的计算量和子任务间通信量,生成相应的任务dag图。
dag图中结点上的数值表示子任务计算量,弧上的数值表示两结点间通信量。
第二阶段主要是根据dag和速度性能矩阵计算出每个子任务在各台机器上的执行时间,生成时间性能矩阵;根据通信性能矩阵和子任务的通信量计算各子任务间的通信时间,生成通信时间矩阵。
第三阶段根据前两个阶段结果,给出各子任务到各机器的映射和符合任务dag图偏序关系的调度。
映射和调度可以是静态或动态的,动态调度需根据机器负载和网络状态信息进行。
第四阶段为执行。
应用与研究异构计算的应用范围很广,几乎所有涉及巨大挑战性问题的求解都可用异构计算进行经济有效的求解。
典型的应用包括图像理解、质点示踪、声束形成、气候建模、湍流对流混合模拟以及多媒体查询等。
这些应用中通常都含有多种不同的计算类型的需求,因此很适合于用异构计算来进行求解。
1、未来应重点开展异构混合多机方式的网络异构计算的研究,它代表着发展趋向,且较经济有效;2、自动异构计算是长期追求目标,在现阶段宜采用用户指导方法来进行研究和开发;3、应尽量利用现有成熟工具如pvm和mpi来开展异构计算的研究和开发;4、应注意开展异构计算的理论分析和建模、性能估计模型、有关软件工具以及异构计算中任务映射和调度算法等方面的研究;5、应研究如何使异构计算系统具有良好的单一系统映像。
今天的计算技术面临挑战计算产业的发展陷入了四处挚肘的窘境,推动计算技术发展的努力不得不在多个互相牵制的因素上仔细权衡。
首先,降低功耗对各种类型、各种规模的计算都变得日益关键。
消费者希望笔记本电脑、平板电脑、智能手机的电池续航时间更长、尺寸更小、分量更轻。
与之类似,数据中心的用电需求和制冷成本不断上升。
另一方面,我们不断追求更高的计算性能,为用户提供更炫酷的体验。
我们希望通过更加自然的人机界面(包括语音和手势)来控制设备,我们希望设备可以处理无休止膨胀的数据(从照片、录像一直到―云‖上的一切内容)。
为了提供这些功能,程序员的工作效率变成了必须确保的关键因素。
为此,必须使得软件开发者很容易地通过原来所熟悉的、强大的编程模型,就能充分利用新的计算能力。
最后,应用软件需要支持和兼容广泛的硬件平台也日益变得重要。
对开发者而言,随着平台种类的不断增多,目前反复移植代码的惯常方法必然难以为继。
计算产业需要一种新的发展思路–让计算机架构更加高效,才能在上述需求交织的复杂环境中前行。