我需要一些帮助来理解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中的核心时,它似乎非常简单。我有一个超级密集的“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核心那样真正是一个核心”之类的简单答案将非常感激。