我的GPU有2个多处理器,每个处理器具有48个CUDA内核。 这是否意味着我可以并行执行96个线程块?

===============>>#1 票数:3

这归结为语义。 “执行”和“并行运行”的真正含义是什么?

从根本上讲,拥有96个CUDA内核实际上意味着您每个内核时钟周期的潜在吞吐量为96个计算结果。

核心主要是算术逻辑单元(ALU),它执行基本的算术和逻辑运算。 除了访问ALU之外,线程还需要其他资源(例如寄存器,共享内存和全局内存)来运行。 GPU将保持许多线程处于“运行中”状态,以充分利用所有这些资源。 “运行中”的线程数通常会比内核数高得多。 一方面,可以将这些线程视为“并行执行”,因为它们同时都在消耗GPU上的资源。 但是另一方面,它们中的大多数实际上正在等待某些东西,例如数据从全局内存中到达,或者算术结果通过内核中的管道。 GPU将正在等待某些东西的线程放到“后燃烧器”上。 他们正在消耗一些资源,但是它们确实在运行吗? :)

===============>>#2 票数:3 已采纳

不,不是。

从CUDA C编程指南的第4章:

对于给定内核,可以在多处理器上驻留并一起处理的块和扭曲的数量取决于内核使用的寄存器和共享内存的数量以及多处理器上可用的寄存器和共享内存的数量。 每个多处理器还具有最大数量的驻留块和最大数量的驻留线程。 这些限制以及多处理器上可用的寄存器和共享内存的数量是设备计算能力的函数,并在附录F中给出。如果每个多处理器没有足够的寄存器或共享内存来处理至少一个块, ,内核将无法启动。

在以下位置获取指南: http : //developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Programming_Guide.pdf

要检查特定设备的限制,请从SDK编译并执行cudaDeviceQuery示例。

到目前为止,在所有计算功能中,每个多处理器的最大驻留块数相同,并且等于8。

===============>>#3 票数:0

并发执行的线程数取决于您的代码和CUDA设备的类型。 例如,费米为每个流多处理器有2个线程调度程序,并且对于当前CPU时钟,将为计算或内存负载或超越函数计算调度2个半周期。 当一个半扭曲的等待负载或执行的超越功能时,CUDA内核可能执行其他任何操作。 因此,您可以在内核上获得96个线程,但是如果您的代码可以得到它。 并且,当然,您必须有足够的内存。

  ask by Programmer translate from so

未解决问题?本站智能推荐:

1回复

CUDA:每个多处理器的线程数和每个块的线程区别是什么? [重复]

这个问题在这里已有答案: CUDA:总共有多少并发线程? 3个答案 我们有一个安装了两个Nvidia Quadro FX 5800卡的工作站。 运行deviceQuery CUDA示例显示每个多处理器(SM)的最大线程数为1024,而每个块的最大线程数为512。
4回复

流式多处理器,块和线程(CUDA)

CUDA核心,流式多处理器和块和线程的CUDA模型之间有什么关系? 什么被映射到什么和什么是并行化以及如何? 什么是更有效,最大化块数或线程数? 我目前的理解是每个多处理器有8个cuda核心。 并且每个cuda核心都能够一次执行一个cuda块。 并且该块中的所有线程在该特定核
1回复

为什么使用大于每个多处理器内核数的线程块

我有Nvidia GeForce GTX 960M显卡,它具有以下规格: 多处理器:5 每个多处理器的内核数:128(即5 x 128 =总共640内核) 每个多处理器的最大线程数:2048 最大块大小(x,y,z):( 1024、1024、64) 经线
1回复

如何将线程块分配给NVIDIA GPU上的多处理器?

假设我有8个线程块需要执行,并且我的GPU上有8个SM(流多处理器),并且8个线程块可以放入一个SM中。 我想知道如何将线程块分配给SM。 是否将所有线程块分配给一个SM,其他7个线程块为空? 还是将每个线程块分配给一个单独的SM?
1回复

NVidia CUDA:Tesla T10处理器和Tesla M2090处理器之间的区别

我有一个执行有限差分计算的CUDA代码。 该代码在Tesla M2090处理器上运行良好,没有错误。 相同的代码会导致Tesla T10处理器出现很多错误。 我的结果中有很多零。 有谁知道这两种体系结构之间的区别以及如何解决问题的解决方案
2回复

具有多个GPU的每个块的Cuda线程

在大学项目中使用Cuda GPU编程,只是想知道如果您有2个GPU,GPU的块大小是否可能为1024,是否意味着该块大小增加了一倍? 这会影响程序的实现吗?您需要单独访问GPU吗?
1回复

GPU Kepler CC3.0处理器不仅是流水线架构,还是超标量? [关闭]

在CUDA 6.5的文档中写道: http : //docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#ixzz3PIXMTktb 5.2.3。 多处理器级别 ... 8L用于计算能力3.x的设备,因
1回复

使用CUDA在GPU上并行处理简单算法

我有一个CUDA函数,可以在GPU上计算本地二进制模式 。 基本上,LBP是对图像像素进行的计算,其中任何给定像素(i,j)的值都取决于其8个邻居的强度。 到目前为止,代码如下: 图像作为* 无符号字符 * s的一维数组( array = [[row 1] [row 2] [ro
1回复

每个时钟1个CUDA内核能否处理多于1个浮点指令(Maxwell)?

Nvidia GPU列表-GeForce 900系列 -写道: 4单精度性能的计算方法是:将着色器数量乘以基本核心时钟速度即可得到2倍 。 例如,对于GeForce GTX 970,我们可以计算性能: 1664内核* 1050 MHz * 2 = 3494 GFlops峰
1回复

使用其SM内核阻止gpu卡的处理模式

我对计算能力1.3和2.0 gpu卡的调度过程有疑问。 在两种情况下,每次在流式多处理器上调度的最大块数均为8,至少这是我从“占用计算器”中注意到的。 在1.3卡中,每个SM具有8个核心,而在2.0卡中,每个SM具有32个核心。 块流程如何分配内核? 对于1.3,每个核心进程是否