小编use*_*598的帖子

CUDA块和变形

好的,我知道相关的问题一再被问到,我几乎读到了我发现的所有内容,但事情仍然不清楚.可能也是因为我发现并阅读了彼此矛盾的事物(可能是因为,从不同时期,他们提到具有不同计算能力的设备,其间似乎存在相当大的差距).我希望更有效率,减少我的执行时间,因此我需要确切知道有多少线程/ warp /块可以并行运行.此外,我正在考虑对此进行概括,并根据我知道必须执行的操作(对于更简单的程序)和系统规范计算传递给我的内核的最佳线程数和块数.

我有一台GTX 550Ti,btw具有2.1的计算能力.4个SM x 48个核心= 192个CUDA核心.

好的,我不清楚的是:

可以在多处理器(SM)上运行AT ONCE(并行)多于1个块吗?我读到最多可以为SM分配8个块,但没有关于它们如何运行的分配.从我每个SM的最大线程数(1536)几乎不大于我每个块的最大线程数(1024)的事实来看,我认为块不是并行运行的(可能是1个半?).或者至少不是如果我有最大线程数.另外,如果我设置块数,比如4(我的SM数量),它们是否会被发送到不同的SM?或者我无法真正控制所有这些如何在硬件上分布然后这是一个没有实际意义的点,我的执行时间将根据我的设备的奇思妙想而变化...

其次,我知道一个块会将它的线程划分为32个并行运行的线程组,称为warps.现在这些经线(假设它们彼此没有关系)可以并行运行吗?因为在Fermi架构中它声明同时执行2个warp,从每个warp向一组16(?)内核发送一条指令,而在其他地方我读到每个内核处理一个warp,这可以解释1536个最大线程( 32*48)但似乎有点多.1个CUDA核心可以同时处理32个线程吗?

更简单的说明,我要问的是:(对于ex)如果我想在第三个向量中求和2个向量,我应该给它们多长(nr个运算)以及如何在块和线程中将它们分开我的设备以满容量(并行)工作(没有空闲核心或SM).

我很抱歉,如果之前被问过,我没有得到它或没有看到它.希望您能够帮助我.谢谢!

cuda

18
推荐指数
1
解决办法
7759
查看次数

标签 统计

cuda ×1