为了进行并行计算,我需要一些帮助来理解 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 核心一样”。非常感谢。