GPU和CPU有什么区别?GPU中的核心/线程数量可以加速程序计算吗?

6
我需要一些帮助来理解GPU上的核心与CPU上的核心在进行并行计算时的概念区别。
当涉及到CPU中的核心时,它似乎非常简单。我有一个超级密集的“for”循环,迭代四次。我的Intel i5 2.26GHz CPU中有四个核心。我将一个循环分配给每个核心。每个四个循环彼此独立。瞬间 - 我现在创建了四个线程,并且使用100%的CPU(而不是只使用一个核心的25%CPU)。我的“for”循环现在运行得比未并行化时快近四倍。顺便说一下,对于“for”循环,我使用了Microsoft Visual Studio 2012上可用的自动并行化,就像这个在线示例中所示:(http://msdn.microsoft.com/en-us/library/hh872235.aspx)。
相比之下,我甚至不知道我的笔记本电脑GPU(Intel Graphics Media Accelerator HD或Intel HD Graphics,共享1696MB内存)中有多少核心可用于并行计算。我甚至不知道将GPU与CPU进行有效比较的方法。当我在我的图形卡描述旁看到“12@500MHz”时,我想知道这是否意味着图形卡具有12个用于并行化的核心,可以类似于CPU中的4个核心工作,只不过GPU核心运行速度为500MHz [慢]而不是2.26GHz [快]?Windows任务管理器中是否有与CPU使用情况相媲美的GPU使用情况?如果有所区别,我是一个完全的新手,试图在Visual Studio 2012中使用C++库。当我编写实际的GPU软件时,并行化代码如下:(http://msdn.microsoft.com/en-us/library/hh265137.aspx)。

那么,您能否填补我的知识中的一些空白或错误,或帮助我比较这两者?我不需要超级复杂的答案,像“由于某种原因,您不能将CPU核心与GPU核心进行比较”或“GPU核心并不像CPU核心那样真正是一个核心”之类的简单答案将非常感激。


1
如果你要花时间给我的问题点踩,至少留下一句话解释为什么你认为这是一个糟糕的问题。这个问题比较开放式,你可以从各种角度来回答它。 - user2287171
1
此外,我知道随笔记本电脑一起送的显卡很烂。它不是一张能够与 <amp.h> 协同工作的“离散显卡”。就此问题而言,请假装它是一张性能良好的“合法”显卡,适用于进行程序计算。 - user2287171
1个回答

4

首先,操作系统只有在您的代码中要求时才会启用更多的核心。尝试使用OpenMP或Win32线程在i5上实现并行。

其次,CPU的时钟速度比GPU的时钟速度快。如果GPU的时钟速度与CPU相同,您可以将其用作炉灶进行煮饭。 GPU中的核心数量多于CPU。线程和核心之间存在差异。

第三,我建议您阅读CPU和GPU的规格说明书和参考手册。此外,请不要忘记PCI-e。这是并行编程实现的瓶颈。

希望这澄清了您的疑虑。如有更多问题,请随时提问。


喜欢你为这个问题提供的参考资料。 - Harrisson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接