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。)。

那么,请您填补我知识中的一些空白或错误​​,或者帮助我比较两者吗?我不需要一个超级复杂的答案,比如“你无法将 CPU 核心与 GPU 核心进行比较,因为空白”或“GPU 核心并不是真正的核心,就像 CPU 核心一样”。非常感谢。

4

1 回答 1

4

首先,只有当您在代码中请求它们时,操作系统才会启动更多内核。尝试使用 OpenMP 或 Win32 线程在 i5 上实现并行性。

其次,CPU 时钟不仅仅是 GPU 时钟。如果 GPU 的时钟与 CPU 相同,则可以将其用作炉灶做饭。GPU中的核心不仅仅是CPU。线程和核心之间是有区别的。

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

希望这能澄清你的疑惑。还有什么问题,欢迎提问。

于 2013-06-24T11:06:35.427 回答