抱歉,回复较晚,最近比较忙。
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