6 parallel-processing performance multithreading multicore gpgpu
我需要一些帮助来理解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(英特尔图形媒体加速器HD,或英特尔高清显卡,1696MB共享内存)中的内核数量.我甚至不知道将GPU与CPU进行比较的有效方法.当我在我的显卡描述旁边看到"12 @ 500MHz"时,我想知道这是否意味着显卡有12个并行核心,可以像CPU中的4个内核一样工作,除了GPU核心运行在500MHz [慢而不是2.26GHz [快]?GPU使用率是否与Windows任务管理器中的CPU使用率相当?我是一个试图在visual studio 2012中使用C++库的新手,如果这有任何区别的话.当我编写实际的GPU软件时,并行化代码如下所示:( http://msdn.microsoft.com/en-us/library/hh265137.aspx).
那么,请您填写我的知识中的一些空白或错误,或者帮助我比较两者?我不需要一个非常复杂的答案,就像"由于空白空白而无法将CPU核心与GPU核心进行比较"或"GPU核心不像CPU核心那样真正的核心"这样简单非常感谢.
首先,只有当您在代码中请求时,操作系统才会启动更多内核。尝试使用 OpenMP 或 Win32 线程在 i5 上实现并行性。
其次,CPU 时钟高于 GPU 时钟。如果GPU的时钟与CPU相同,则可以将其用作炉子来做饭。GPU 中的核心数量比 CPU 多。线程和核心之间是有区别的。
第三,我建议您阅读 CPU 和 GPU 的规格和参考手册。另外,不要忘记 PCI-e。这是并行编程实现的瓶颈。
希望这能澄清您的疑虑。如有任何其他问题,请随时提问。