算法的区别


所有跟贴·加跟贴·新语丝读书论坛

送交者: 竹间棋 于 2009-03-18, 18:45:38:

回答: 目前的主要GPU产品 由 竹间棋 于 2009-03-18, 18:44:42:

算法的区别
CPU和 GPU在计算应用上的区别,可以概括为CPU是数量很少但非常快速的处理单元,而GPU拥有非常大量速度相对CPU来说相对较慢的处理单元。目前市面上典型的CPU,例如一个高端的Intel 的Xeon (中文名至强)处理器 ,拥有四个处理单元,即所谓的CORE,具有6-12M高速缓存,时钟频率为2-3GHz;而一个典型的GPU,例如ATI 的Radeon HD 4850,却同时拥有800个流处理单元,时钟频率为600-750MHz。所以正如文献中所指出的,GPU所用拥有的处理单元数目,已经和小规模的分子模拟中含有的原子数目相当,利用小规模的分子模拟来讨论算法在处理器上的计算能力是不合适的,对于具有大量处理单元的GPU来说,很容易出现超线性的加速比依赖关系。对于GPU算法来说,更重要的是如何充分利用计算资源,这是算法的核心。

算法在CPU和GPU在内存存取方式上的区别。

内存数据的存取在运算中是一个耗费时间的过程。从内存中存取数据,通常需要耗费几十到上百个时钟周期。CPU通过高速缓存的方式,来实现内存数据的随机存取,所以在算法上对内存的存取顺序的依赖性比较低,甚至不需要进行过多的考虑。而GPU不同,虽然显存的存取速度一般都远快于普通内存,当时依然是十分耗费时间的任务。更为糟糕的事,GPU由于拥有大量的处理单元,所以无法为每个处理单元配备大量的高速缓存,导致了随机地对内存进行操作的时间开销巨大。所以在算法上,要求尽量进行连续块数据的操作和连续计算,而不是把数据存起来以后在时候取出来进行操作。

算法在CPU与GPU之间数据通信方式上的区别。

从内存中存取数据虽然相对运算来说比较慢,但是CPU和GPU之间通过PCIe接口交换是一个更慢的过程。所以应该尽量减少不必要的CPU和GPU之间数据交换,甚至所有的模拟工作,都应该在GPU中完成,除非必要的数据输入,分析和结果输出。这个结论是不太容易被人接受的,因为有人认为如果CPU分担一部分计算人物速度会更快,但是目前的测试结果否定了这种算法的思路。


算法在CPU和GPU在处理单元组织结构上的区别。

和CPU不同,线程在GPU上的执行并不是相互独立的。通常GPU上线程被分成若干组,每组的线程必须进行完全一样的操作。那么在算法上,就导致了如果出现分支结构,性能就会出现很大的降低。从根本上讲,这种硬件结构要求除非万不得已,不要出现算法上的分支和其他的需要进行流控制的情况发生。




所有跟贴:


加跟贴

笔名: 密码: 注册笔名请按这里

标题:

内容: (BBCode使用说明