Cuda GPU计算能做什么?

Cuda GPU计算能做什么?,cuda,gpu,Cuda,Gpu,我对GPU计算几乎一无所知。我已经看过一些关于GPU计算的文章,比如说。听起来GPU在计算方面有一些CPU没有的限制。我需要知道GPU能做什么样的计算 谢谢。好吧,我是CUDA的新手,有一些经验,所以我想我可以帮助一个新手对另一个新手做出回应 对你的问题的简短回答是: 它可以做与CPU完全相同的事情,但它具有不同的功能,可以更快或更慢地提供所需的结果(如果考虑到硬件成本相同)。 CPU,即使是多核CPU,也寻求更低的延迟,这导致了构建中的一系列需求。相反,GPU假设要处理的独立数据太多,如果为每

我对GPU计算几乎一无所知。我已经看过一些关于GPU计算的文章,比如说。听起来GPU在计算方面有一些CPU没有的限制。我需要知道GPU能做什么样的计算


谢谢。

好吧,我是CUDA的新手,有一些经验,所以我想我可以帮助一个新手对另一个新手做出回应

对你的问题的简短回答是:

它可以做与CPU完全相同的事情,但它具有不同的功能,可以更快或更慢地提供所需的结果(如果考虑到硬件成本相同)。

CPU,即使是多核CPU,也寻求更低的延迟,这导致了构建中的一系列需求。相反,GPU假设要处理的独立数据太多,如果为每个数据项处理一条指令,那么在处理当前指令中的所有内容之前,第一条数据项的结果应该可以参与下一条代码指令(这有点难实现,需要大量的并行开发经验)。因此,GPU结构没有考虑到与CPU强度相同的处理延迟,因为它可能是“隐藏的”通过批量处理,它也不太担心时钟频率,因为它可以在处理器数量上得到补偿

所以,我不敢说GPU对CPU有限制,我要说它有更具体的处理目的,比如声卡,它的构造利用了这种特殊性。比较两者就像比较摩托雪橇车和自行车一样,没有真正意义


但是,有一点是可以说明的:如果可以采用高并行方法,那么GPU可以以比CPU更低的成本提供更高的效率,只要记住CPU代表中央处理单元,中央处理单元可以理解为必须比外围处理单元更通用。

首先,您的代码应该包括许多循环,以便调度器在找不到足够的资源来完成循环时可以在循环之间切换。之后,您应该确保代码不会遇到以下情况之一:

1.多样性:如果您的代码有长的
If语句
,那么您的代码在GPU上很可能是多样的。每32个线程被分组在一起,并且一次为所有线程分配一条指令。因此,当在某些线程上执行
If
时,属于
else语句
的其他线程应该等待,反之亦然,这就意味着性能下降

  • 非平衡内存访问:另一件事是内存访问模式。如果您有序地访问全局内存,则可以利用最大内存带宽,但如果您对全局内存上数据的访问顺序错误,则会发现内存访问是一个瓶颈。因此,如果您的代码非常适合缓存,请不要使用GPU作为ALU/缓存的比率GPU上的内存低于CPU

  • 占用率低:如果您的代码占用了这么多寄存器、共享内存、加载/存储数据和特殊的数学函数(如三角函数),那么您可能会发现资源不足,从而无法建立GPU的全部计算能力


  • 它可以做任何事情,但硬件更适合大规模并行任务。无论如何,这个问题并不真正属于这个网站。@NeilLocketz一个最小生成树的并行算法已经被提出,并行cpu和gpu之间的区别是什么?gpu比普通的多核cpu要并行得多英伟达10xx系列有大约4000个内核。内核的运行速度比CPU内核低,所以每个任务都慢,但是它们同时完成所有这些任务,所以并行任务的吞吐量可以更快。相关:(就像他们在我的学校里说的,“告诉所有这些PHP的人,他们学会了如何在互联网上编程……”