我的GPU上的线程,块和网格总数。

时间:2018-06-26 05:04:43

标签: cuda gpu nvidia

对于NVIDIA GEFORCE 940mx GPU,设备查询显示其具有3个多处理器和每个MP 128个内核。enter image description here

  

每个多处理器的线程数= 2048

因此,3 * 2048 = 6144.ie。 GPU中共有6144个线程。

6144/1024 = 6,即总共6个方块。经线大小为32。

但是从这段视频https://www.youtube.com/watch?v=kzXjRFL-gjo中,我发现每个GPU都有线程限制,但没有块数限制。

所以我对此感到困惑。我想知道

  1. GPU中共有多少个线程?我们可以将所有线程用于 执行程序?
  2. 有多少块和网格?

1 个答案:

答案 0 :(得分:1)

您似乎困惑的主要根源是混淆了两组完全不同的限制:

  1. 可以在GPU上同时运行的最大线程和块数。
  2. 可为给定内核启动的最大线程和块数。

您引用的数字(每个多处理器2048个线程,总共三个多处理器= 6144个线程代表第一组限制。您在deviceQuery输出的屏幕截图中显示的数字:

  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)

定义给定内核启动的限制。尽管它们有些重叠,但是您可以将它们或多或少地分开对待。有关内核启动参数和块尺寸的实用性的更详尽讨论,请参见here