|
显示芯片的运算单元数量很多,因此对于不能高度并行化的工作,所能带来的帮助就不大。
显示芯片通常不具有分支预测等复杂的流程控制单元,因此对于具有高度分支的程序,效率会比较差。
因此,最适合利用 CUD ...
weihua8206 发表于 2009-7-10 12:49
GPU里面好像是有线程派分处理器的,不过好像没详细地说过,记得PS3的CELL好像是也是有个处理器专门做派分任务的。而一般的操作系统的CPU调度算法是软件实现的(当然某些算法要有一定的硬件支持)。
其实CUDA 不是单单GPU在“动”,而是依靠一起的,不恰当地说其实也是一种CPU+GPU的模型(不过是CUDA做桥梁)。 CPU可以执行串行的代码,而核心部分的并行代码则由GPU执行。编译器把CUDA代码编译成PTX代码(GPU执行)和CPU代码(CPU执行)。
举个例子,例如一个待解决的问题的一个模型为G(f(1),f(2),f(3),f(4),f(5),.....f(n)),且f(i)的相关性不大,因此可以用GPU多线程去实现f(i)子任务,而且G功能则由CPU实现。如果子任务f(i)可以再分割成更轻量级的q(i)(t1,t2,t3,t4...tn),则G.f功能可以由CPU实现,t功能由GPU实现。或者G由CPU实现,f.t功能由GPU并行化实现。这就是CPU+GPU协作的一个体现。 |
|