关于异构计算的解释

lkchl 2012-08-01 09:45:13
看到很多人在问什么叫异构计算,看来这个概念还比较新,我就试着来解释一下这个概念。

计算单元可以分成:通用计算单元(CPU),专用计算单元(GPU/DSP)等

简单点说,由一个或若干个通用计算单元加一个或若干个专用计算单元构建的系统就是异构计算系统,由两者协同起来共同执行通用计算任务就是异构计算,目前在PC上最常见的组合就是CPU+GPU。

异构计算的目的一般是加速和节能,过去依靠工艺和频率来提高CPU的计算性能,目前已经遇到了瓶颈,加速的任务已经由过去依赖工艺和功耗转向依靠架构的改变。在过去GPU只能执行图形任务,不能执行通用计算,所以还称不上异构计算,现在的GPU已经具备了执行通用计算的能力,和CPU协同工作就组成了一个异构计算系统,AMD的APU就是其中的一个实现。

有了硬件的实现,同样需要软件的支持,目前比较流行的编程语言是C++AMP/OPENCL/CUDA
...全文
5894 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjalt2121 2013-03-09
  • 打赏
  • 举报
回复
不错,学习了。
Tom_殇子 2013-03-08
  • 打赏
  • 举报
回复
支持AMD,之前对AMD没什么了解。
yincheng_mkl 2013-02-22
  • 打赏
  • 举报
回复
引用 11 楼 zhangzxing 的回复:
没事逛逛论坛 就是长见识
确实
txwg2011 2013-02-20
  • 打赏
  • 举报
回复
cpu 是野码 wild *.* gpu 序码 apu 短路人们需要的电路 加油 AMD
QSlashLv0 2012-10-19
  • 打赏
  • 举报
回复
多谢解释 但如果这样的话 也就等于一个workitem的私有内存被多个上下文所瓜分吧 另外请问一下 指令最终是放在什么存储器呢
outstander 2012-10-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

GPU则使用SIMT(单指令多线程),SIMT的好处是无需开发者费力把数据凑成合适的矢量长度,并且SIMT允许每个线程有不同的分支。
---------------------------------------------
现在实际上 每个流处理器要消耗所有分支加起来的执行时间吧 我记得一个流处理器只有一个IP指针
另外APU啥时候能做到所有内存都可CPU GPU共用,而不是只有主板分给……
[/Quote]

GPU大量的PN结资源用于制作寄存器堆,不同的线程使用不同的寄存器组,线程切换时直接更换寄存器组,因此不需要额外的开销用于保护现场,因为现场一直在。
QSlashLv0 2012-10-18
  • 打赏
  • 举报
回复
GPU则使用SIMT(单指令多线程),SIMT的好处是无需开发者费力把数据凑成合适的矢量长度,并且SIMT允许每个线程有不同的分支。
---------------------------------------------
现在实际上 每个流处理器要消耗所有分支加起来的执行时间吧 我记得一个流处理器只有一个IP指针
另外APU啥时候能做到所有内存都可CPU GPU共用,而不是只有主板分给显卡的内存(显存)

GPU切换线程的代价是0,事实上GPU通常每个时钟周期都切换线程。
----------------------------------------------------------
这个求原理,真不太明白,kernelC的大多数栈上变量不是放寄存器的吗,不用保存和恢复这海里寄存器状态吗
张在兴 2012-09-28
  • 打赏
  • 举报
回复
没事逛逛论坛 就是长见识
2012-08-30
  • 打赏
  • 举报
回复
GPU 嗯嗯
quan228228 2012-08-29
  • 打赏
  • 举报
回复
我在网上搜索了一下,觉得这个解释比较合适。

异构计算的英文名称是Heterogeneous computing,主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括CPU、GPU等协处理器、DSP、ASIC、FPGA等。我们常说的并行计算正是异构计算中的重要组成部分异构计算近年来得到更多关注,主要是因为通过提升CPU时钟频率和内核数量而提高计算能力的传统方式遇到了散热和能耗瓶颈。而与此同时,GPU等专用计算单元虽然工作频率较低,具有更多的内核数和并行计算能力,总体性能/芯片面积的比和性能/功耗比都很高,却远远没有得到充分利用。
  CPU的设计让其比较擅长于处理不规则数据结构和不可预测的存取模式,以及递归算法、分支密集型代码和单线程程序。这类程序任务拥有复杂的指令调度、循环、分支、逻辑判断以及执行等步骤。而GPU擅于处理规则数据结构和可预测存取模式。而APU的设计理念则正是让CPU和GPU完美合作,集合两者的长处,用异构计算来达到整体性能的最佳化。
目前,已经有50款领先的应用能够利用AMD APU进行加速,而后续的应用也将陆续到来——异构计算普及的一刻应该是近在咫尺了。

再谈谈现在正在流行的异构计算CPU+GPU。

CPU和GPU的本质区别
CPU的目标是快速执行单一指令流;
CPU将其用于乱序执行、寄存器重命名、分支预测以及巨大的cache上,这些设计都是为了加速单一线程的执行速度
CPU利用cache来降低内存访问延迟
CPU通过大量的cache和分支预测来降低延迟,这些机制消耗了大量的晶体管的电能;
CPU每个核心支持1~2个线程;
CPU切换线程的代价是数百个时钟周期;
CPU通过SIMD(单指令多数据)来处理矢量数据;
Intel的CPU没有集成内存控制器

GPU的目标是快速执行大量的并行指令流。
GPU将晶体管用于处理器阵列、多线程管理、共享内存、内存控制器,
这些设计并不着眼于提高单一线程的执行速度,而是为了使GPU可以同时执行成千上万的线程,
实现线程间通信,并提供极高的内存带宽。
GPU使用cache来放大内存带宽
GPU通过同时运行上千个线程来隐藏延迟,等待内存访问的线程会被切换掉,GPU切换线程不耗时间。
对于支持CUDA的GPU,每个流处理器可以同时处理1024个线程。
GPU切换线程的代价是0,事实上GPU通常每个时钟周期都切换线程。
GPU则使用SIMT(单指令多线程),SIMT的好处是无需开发者费力把数据凑成合适的矢量长度,并且SIMT允许每个线程有不同的分支。
支持CUDA的GPU集成有8个内存控制器,GPU的内存带宽通常是CPU的十倍

CPU的长项是整数计算,GPU的优势则是浮点计算。
对于整机性能而言,CPU和GPU都是性能的保障,合理的搭配才是重中之重,才能给用户带来最强的综合性能。

AMD强调两手都要硬,推出了融合CPU和GPU的APU——这是大势所趋。
崔斯特 2012-08-28
  • 打赏
  • 举报
回复
不错~
neoxmu 2012-08-22
  • 打赏
  • 举报
回复
楼上说得很形象,弄懂了~~~
AMDxiaohu 2012-08-21
  • 打赏
  • 举报
回复
多核cpu并行计算的硬件还是CPU,而异构计算面向的是包括CPU,GPU甚至DSP的多种架构的设备。OpenCL和C++ AMP需要得到多个硬件处理器厂商的支持才可以得以生存。异构计算的理念,个人认为就是:兄弟们 一起上。能干重活的 干重活;智力超群的 干巧活
ansj 2012-08-20
  • 打赏
  • 举报
回复
和多核cpu并行计算的区别在哪里???就是..并行条件支持不同的计算架构
kyle 2012-08-14
  • 打赏
  • 举报
回复
有点收获!

608

社区成员

发帖
与我相关
我的任务
社区描述
异构开发技术
社区管理员
  • OpenCL和异构编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧