我对 GPU 中的扭曲有疑问。
我使用了以下配置:
- GeForce 210
- Cuda 能力主要/次要:1.2
- 2 个多处理器,8 个 CUDA 核心/MP:16 个 CUDA 核心
- 经纱尺寸:32
以下是运行时间(我使用了 nsight):
block,threads/block : time
--------------------------
1,32 : 5.1
8,32 : 5.4
16,32 : 5.7
32,32 : 8.9
64,32 : 14.8
Warps(=32 个线程)同时运行,并且有 2 个 MP。所以我认为这个 GPU 的最大能力是 64 线程,但是 16*32 线程几乎同时运行。考虑到warp scheduler,我无法理解这个结果。
我的问题是:
- 为什么 16*32 线程与 32 线程几乎同时运行?
- 为什么 64*32 运行时间不是 32*32 的两倍
- 我听说全局内存访问速度和寄存器一样快。这样对吗?(包括 3.5 GPU 或昂贵的 GPU)