Maximum number of threads per multiprocessor是怎么得到的?

抱歉,回复较晚,最近比较忙。

1.一个block中的最大线程数是固定的1024。
2.每个sm中最大的线程数,你要这样计算:

  • 先看你的GPU架构可以在这里查到https://developer.nvidia.com/cuda-gpus
  • 比如你的3060,就是ampere架构,在里面可以查到是8.6.
  • 然后你在看每个SM中可以驻留的最大warp数量,在这里可以查到:CUDA C++ Programming Guide
  • 这里看到3060的架构也就是8.6那一列最大warp驻留数是48,也就是一个sm可以最多保留48个warp
  • 然后每个warp的线程数是32,那么你的GPU中一个SM最大的驻留线程数是:32 threads/warp * 48 warp = 1536 threads