|
本帖最后由 xmubingo 于 2012-8-13 18:11 编辑
经常在阅读文档的时候会遇到这些名词。一般他们都会以tesla架构为例子,比如teslaC1060也就是1个SM有8个SP.
我的总结:
1. 一个显卡(GPU)里有多个(Streaming Multiprocessor)SM, 每个SM中有多个(Streaming processor)SP。
2. 一个SM会负责多个ThreadBlock(线程块)的计算任务,一般为8个。每个SP一个时刻负责一个thread。
3. 硬件层面,SM中有shared memory, register, L1 cache,因此ThreadBlock内可以共享shared memory,单独的thread拥有自己的Local memory(先被分配到register中,如果register不够就分配到global memory中)。
4. Warp是SM调度和执行的基本单位。SIMT机制使得同一个Warp里的线程根据不同的DATA执行相同的指令。一个SM,一次只能运算一个Block里的一组Warp,如果warp中有线程的DATA没有取到,那么调度下一下warp运算。
Half-Warp是SM存储操作的基本单位。它和coalescing访问global memory息息相关。
以我们实验室的GXT550 Ti为例子
( 4) Multiprocessors x (48) CUDA Cores/MP: 192 CUDA Cores
Warp size: 32
说明,有4个SM,每个SM中48个SP,一共192个SP(core)。
warp大小为32,即,要实现coalescing访问,需要满足:
现在Tesla C2075拥有448个core。
http://en.wikipedia.org/wiki/Nvidia_Tesla
GPU计算,看来显存和core核数是关键。
个人认为,同样的core核数,SM数量应该多点,SM中的SP数可以少点。SP多了之后对SM资源抢占变得紧缺。就像有10个房间,每个房间3个人,和3个房间,每个房间10个人一样。
参考资料:http://kheresy.wordpress.com/200 ... E%9A%E8%88%87-warp/ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|