Multithreading GPU与CPU?用于程序计算加速的GPU中的内核/线程数?

Multithreading GPU与CPU?用于程序计算加速的GPU中的内核/线程数?,multithreading,performance,parallel-processing,gpgpu,multicore,Multithreading,Performance,Parallel Processing,Gpgpu,Multicore,为了进行并行计算,我需要一些帮助来理解GPU上的内核与CPU上的内核的概念 当涉及到CPU中的核心时,它看起来非常简单。我有一个超级密集的“for”循环,循环四次。我的Intel i5 2.26GHz CPU中有四个内核。我给每个核心一个循环。四个回路中的每一个都是相互独立的。Boom-我现在创建了四个线程,CPU使用率为100%(而不是只有一个内核的25%CPU使用率)。我的“for”循环现在的运行速度几乎是不并行化时的四倍。顺便说一下,对于“for”循环,我使用了Microsoft Visu

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

当涉及到CPU中的核心时,它看起来非常简单。我有一个超级密集的“for”循环,循环四次。我的Intel i5 2.26GHz CPU中有四个内核。我给每个核心一个循环。四个回路中的每一个都是相互独立的。Boom-我现在创建了四个线程,CPU使用率为100%(而不是只有一个内核的25%CPU使用率)。我的“for”循环现在的运行速度几乎是不并行化时的四倍。顺便说一下,对于“for”循环,我使用了Microsoft Visual Studio 2012上提供的自动并行化,如以下在线示例:()

相比之下,我甚至不知道我笔记本电脑的GPU(英特尔图形媒体加速器HD,或英特尔高清图形,拥有1696MB共享内存)中可用于并行计算的内核数量。我甚至不知道一种比较GPU和CPU的有效方法。当我看到“12@500MHz“在我对图形卡的描述旁边,我想知道这是否意味着图形卡有12个用于并行化的内核,除了GPU内核以500MHz(慢)而不是2.26GHz(快)运行外,它们的工作方式有点像CPU中的4个内核?GPU的使用率是否与Windows任务管理器中的CPU使用率相当?在Visual Studio 2012中,我是一个尝试使用C++库的新手,如果这有什么区别的话。当我编写实际的GPU软件时,并行化代码如下所示:()


那么,请你填补我知识中的一些空白或错误,或者帮我比较两者?我不需要一个超级复杂的答案,像“你不能把一个CPU核心和一个GPU核心进行比较,因为它是空白的”或者“一个GPU核心并不像一个CPU核心那样是一个真正的核心”这样的简单的答案将非常受欢迎。

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

其次,CPU时钟比GPU时钟更重要。如果GPU的时钟和CPU一样,你可以把它当作炉子来做饭。GPU中的核心不仅仅是CPU。线程和内核之间有区别

第三,我建议您阅读CPU和GPU的规范和参考手册。另外,别忘了PCI-e。这是并行编程实现的瓶颈


希望这能澄清你的疑虑。还有什么问题,尽管问。

如果你想尽力否决我的问题,至少留下一句话来解释为什么你认为这是个糟糕的问题。这个问题是开放式的,你可以从不同的角度来回答。而且,我知道我的笔记本电脑标准配置的显卡是一堆废话。它不是一个能够使用的“离散图形卡”。为了回答这个问题,请假装这是一张“合法”的卡片,可以很好地进行程序计算