通过SDK 3.0看fermi的软件(cuda)架构的变化

今天总算读到了sdk 3.0的编程手册,仔细读来还是有不少失望的地方。

 

1)没有看到有函数指针的可能,而这是原来最希望新加的功能。到底有没有,要等读到
  ptx 2.0手册了。但看来可能性不大。

  *粗读过ptx 2.0手册了,确实没有,而且明确说,以后也不大会有了。

 

2)全局mem访问还是要注意对齐,当然限制条件是放宽很多了,只要从128字节整数倍
开始的连续128字节就可以了。L1/L2 cache应该是对访问事务本身的缓存,大小就是
128字节.换句话说,不合理的访问也会带来cache的浪费!

3)bank冲突扩展为整个warp,自然大小也就是32个单位了。呵呵。而每个单位还是4字节
32位大小。

4)warp数总算没变,还是32线程。但sm中的sp从8扩到了32个。
相应的规格变化(与GT200比较)如下:
最大活跃block数还是8个。->同样多的sp数的话,最大活跃block总数为GT200的1/4。
最大活跃线程数是1536个。->每个block最少是192个线程。
                                      ->同样多的sp数的话,最大活跃线程总数为GT200的3/8。
reg为32K。->这个最迷糊人了,对活跃block而言,比GT200扩大了1倍。而对活跃线程
                   而言,是每线程21.333个,比GT200高了33%。但对每sp而言,是1K个.比
                   GT200的2K个/sp少了一半。
smem可为48KB。->同样,对活跃block而言,比GT200扩大了3倍。对活跃线程而言,每
                   线程32B,比GT200扩大了1倍。但对每个sp而言,是1.5KB.比GT200的2KB
                   减少了1/4。
一个block中最大线程数从512个扩大到了1024个。
*:从上面对比可以看出,如果大的构架不变的话,就是改进上面的数字,还是有不少提
高余地的。                   
5)同时可启动(真并行)的kernel数为4个,而非猜的16个。

6)warp 判断函数多了个__ballot。当第N个线程的计算值非0时,对应位设置1。这个还是
比较有用的函数,是"预想外"。呵呵。

7)ptx 2.0还是多了一些指令的,要好好研究......

你可能感兴趣的:(编程,cache,CUDA,扩展)