multithreading - GPU vs CPU? GPU中用于程序计算加速的内核/线程数?

标签 multithreading performance parallel-processing gpgpu multicore

为了进行并行计算,我需要一些帮助来理解 GPU 上的内核与 CPU 中的内核的概念。

当谈到 CPU 中的内核时,这似乎很简单。我有一个 super 密集的“for”循环,它迭代四次。我的 Intel i5 2.26GHz CPU 有四个内核。我给每个核心一个循环。四个循环中的每一个都相互独立。 Boom - 我现在创建了四个线程并且 CPU 使用率为 100%(而不是只有一个内核时 CPU 使用率为 25%)。我的“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 )。

那么,请您填补我知识中的一些空白或错误​​,或者帮助我比较两者?我不需要一个 super 复杂的答案,就像“由于空白而无法将 CPU 内核与 GPU 内核进行比较”或“GPU 内核并不是真正像 CPU 内核那样的内核”这样简单的答案。非常感谢。

最佳答案

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

其次,CPU 时钟比 GPU 时钟多。如果 GPU 的时钟与 CPU 相同,则可以将其用作炉灶来做饭。 GPU 中的核心不仅仅是 CPU。线程和核心之间存在差异。

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

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

关于multithreading - GPU vs CPU? GPU中用于程序计算加速的内核/线程数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16138688/

相关文章:

c# - 如何将 "Parallel.ForEach"作为后台任务执行,将控制立即返回给调用方法?

Activity 销毁不起作用时Android线程中断

c - 寻找轻量级跨平台C线程库

javascript - 插入大量动态 DOM 元素时性能低下

parallel-processing - 在异步并行中使用 .then

python - 如何编写脚本在多核机器上有效运行多进程

Java 线程似乎运行多次

algorithm - 如何有效地计算冒泡排序迭代的次数?

PowerShell脚本读取文件的性能太慢

c# - Task.WaitAll 方法与 Parallel.Invoke 方法