异构计算

异构计算基本概念

异构计算是一种特殊形式的并行和分布式计算,它或是用能同时支持simd方式和mimd方式的单个独立计算机,或是用由高速网络互连的一组独立计算机来完成计算任务。它能协调地使用性能、结构各异地机器以满足不同的计算需求,并使代码(或代码段)能以获取最大总体性能方式来执行。

概括来说,理想的异构计算具有如下的一些要素:
(1)它所使用的计算资源具有多种类型的计算能力,如simd、mimd、向量、标量、专用等;(2)它需要识别计算任务中各子任务的并行性需求类型;(3)它需要使具有不同计算类型的计算资源能相互协调运行;(4)它既要开发应用问题中的并行性,更要开发应用问题中的异构性,即追求计算资源所具有的计算类型与它所执行的任务(或子任务)类型之间的匹配性;(5)它追求的最终目标是使计算任务的执行具有最短时间。
可见,异构计算技术是一种使计算任务的并行性类型(代码类型)与机器能有效支持的计算类型(即机器能力)最相匹配、最能充分利用各种计算资源的并行和分布计算技术。

异构计算的基本工作原理

异构计算需求在析取计算任务并行性类型基础上,将具有相同类型的代码段划分到同一子任务中,然后根据不同并行性类型将各子任务分配到最适合执行它的计算资源上加以执行,达到使计算任务总的执行时间为最小。下面通过一个简单例子来说明异构计算的基本工作原理。在这里插入图片描述
假设:在某一基准串行计算机上执行某一给定计算任务的时间为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。
由上例可见,异构计算系统可比同构计算系统获取高得多的加速比。这主要是因为同构计算系统中的加速比只是靠并行性开发获取的,而异构计算系统中的加速比除了并行性之外,更主要的是靠开发异构性获得的(即不同类型子任务与相应类型的计算资源相匹配),尽管此时会有相应的交互开销。交互开销越小,异构计算的优越性就越加明显。

https://blog.youkuaiyun.com/liyasong666888/article/details/50761594

异构计算的英文名称是Heterogeneouscomputing,主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括CPU、GPU等协处理器、DSP、ASIC、FPGA等。
有点看不懂,没关系,有位大神给了一个通俗的解释:“异构计算的理念,个人认为就是:兄弟们 一起上。能干重活的 干重活;智力超群的 干巧活”
我们知道,电脑中有个部件,叫做cpu,要想让电脑运行的快,必须要有一个速度杠杠的cpu。可是,cpu的性能不是可以无限提升的,它有一个散热和能耗的瓶颈。这时,就出现了这么一种东东——gpu。Gpu,Graphics Processing Unit图形处理器,或者说是显示核心。就是我们说的显卡。
人们将显卡从cpu中独立出来,如果CPU想画一个二维图形,只需要发个指令给GPU,如“在坐标位置(x, y)处画个长和宽为a×b大小的长方形”,GPU就可以迅速计算出该图形的所有像素,并在显示器上指定位置画出相应的图形,画完后就通知CPU “我画完了”,然后等待CPU发出下一条图形指令。
通过将某一部分功能独立出去的方式,使cpu的计算更加单一,从而减轻cpu的负担,提升cpu的速度。有时候,我们同学们没有在电脑上装入显卡,可能会出现屏幕显示抖动的现象。这就是因为cpu把一部分的计算量分出来,作为显卡使用了。而由于频率不一致,导致了屏幕的抖动。
CPU的长项是整数计算,GPU的优势则是浮点计算。
对于整机性能而言,CPU和GPU都是性能的保障,合理的搭配才是重中之重,才能给用户带来最强的综合性能。
现在,我们又将cpu和gpu结合起来,这种东东叫做apu(加速处理器)将中央处理器和独显核心做在一个晶片上(在一个晶片上,但是功能依然是分离的。),它同时具有高性能处理器和最新独立显卡的处理性能,可以更好地提升电脑的运行效率。而且由于不需要安装独立显卡,apu更加的节约空间。

Heterogeneous Computing with OpenCL 2.0 teaches OpenCL and parallel programming for complex systems that may include a variety of device architectures: multi-core CPUs, GPUs, and fully-integrated Accelerated Processing Units (APUs). This fully-revised edition includes the latest enhancements in OpenCL 2.0 including: • Shared virtual memory to increase programming flexibility and reduce data transfers that consume resources • Dynamic parallelism which reduces processor load and avoids bottlenecks • Improved imaging support and integration with OpenGL Designed to work on multiple platforms, OpenCL will help you more effectively program for a heterogeneous future. Written by leaders in the parallel computing and OpenCL communities, this book explores memory spaces, optimization techniques, extensions, debugging and profiling. Multiple case studies and examples illustrate high-performance algorithms, distributing work across heterogeneous systems, embedded domain-specific languages, and will give you hands-on OpenCL experience to address a range of fundamental parallel algorithms. Updated content to cover the latest developments in OpenCL 2.0, including improvements in memory handling, parallelism, and imaging support Explanations of principles and strategies to learn parallel programming with OpenCL, from understanding the abstraction models to thoroughly testing and debugging complete applications Example code covering image analytics, web plugins, particle simulations, video editing, performance optimization, and more
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值