我一直在寻找CPU和GPU之间的主要区别,更确切地说是分离cpu和gpu的细线。例如,为什么不使用多个cpu而不是gpu,反之亦然。为什么在运算计算中gpu比cpu“更快”。什么类型的东西,其中一个可以做,另一个不能做或做有效的,为什么。请不要回复“中央处理单元”和“图形处理单元”等答案。我正在寻找深入的技术答案。
答案 0 :(得分:6)
但是,GPU中的各个处理单元无法与CPU匹配以实现通用性能。它们更简单,并且没有像长流水线,无序执行和指令级并行化这样的优化。
他们也有其他缺点。首先,您必须拥有一个,除非您控制硬件,否则您不能依赖它。此外,还有将数据从主存储器传输到GPU存储器并返回的开销。
因此,这取决于您的要求:在某些情况下,GPU或特斯拉等专用处理单元是明显的赢家,但在其他情况下,您的工作无法分解以充分利用GPU,而且开销使CPU更好选择。
答案 1 :(得分:4)
首先观看此演示:
http://www.nvidia.com/object/nvision08_gpu_v_cpu.html
这很有趣!
因此,重要的是可以控制“CPU”以基本上执行任何命令计算;对于彼此无关的计算,或者每个计算强烈依赖于其邻居(而不仅仅是相同的操作),您通常需要一个完整的CPU。例如,编译一个大型C / C ++项目。编译器必须先按顺序读取每个源文件的每个标记,然后才能理解下一个文件的含义。仅仅因为要处理的 lot 源文件,它们都具有不同的结构,因此相同的计算不会对源文件应用accros。
你可以通过拥有几个独立的CPU来加速这一点,每个CPU都处理不同的文件。将速度提高X倍意味着您需要X CPU,其成本是1倍CPU的X倍。
某些任务涉及对数据集中的每个项目执行完全相同的计算;一些物理模拟看起来像这样;在每一步中,模拟中的每个“元素”都会移动一点;它的直接邻居所施加的力量的“总和”。
由于您在大量数据上进行相同的计算,因此您可以重复CPU的某些部分,但可以共享其他部分。 (在链接演示中,空气系统,阀门和瞄准是共享的;每个彩弹只有重复的桶)。进行X计算所需的成本不到硬件成本的X倍。
明显的缺点是共享硬件意味着你不能告诉并行处理器的一个子集做一件事,而另一个子集做一些不相关的事情。当GPU执行一个任务然后执行另一个不同的任务时,额外的并行容量会浪费。