什么是异构开发或者编程呢?
虽然自己从事CPU+GPU相关工作,但是对异构这个概念之前还不太明确,经过结合开发经验以及查阅资料,对此概念有了一定的理解。
学过计算机组成原理的人都会非常熟悉CPU原理及组成,CPU内部结构是由控制单元、运算单元、存储单元等主要部分组成,其通过地址总线与地址总线实现数据的操作,此处不再多说了;但当处理大量图像图形渲染时,CPU效率不能满足要求(比如大型3D游戏),于是乎针对复杂图形图像处理的GPU就出现了;在这里就不解释GPU的工作原理了,你可以google
一下!
目前计算单元主要分为:通用计算单元(CPU),专用计算单元(GPU)
下面说说什么是异构呢?
由一个(或者多个)通用计算单元(CPU)加上一个(或者多个)专用计算单元构建(GPU等)的系统就是异构计算系统,由两者协同起来共同执行通用计算任务就是异构计算,目前在开发中最常见的组合就是CPU+GPU。对于高要求场合这是明智之举;
异构计算的目的一般是加速数据的处理能力,过去依靠工艺和频率来提高CPU的计算性能,但是现在遇到了瓶颈,加速的任务已经由过去依赖工艺和功耗转向依靠架构的改变。在过去GPU只能执行图形任务,不能执行通用计算,所以还称不上异构计算,现在的GPU已经具备了执行通用计算的能力,和CPU协同工作就组成了一个异构计算系统,AMD的APU就是其中的一个实现。
有了硬件的实现,同样需要软件的支持,目前比较流行的编程语言是C++AMP/OPENCL/CUDA
如果有理解不当之处,欢迎指正!
原文地址:http://blog.csdn.net/gggg_ggg/article/details/42241659