gpu 规约算法2

gpu 规约算法2

第0个block 和第2个block 相加  第1个block 和第3个block 相加     进入共性内存的block数目减半。

-----------------------------------------------------------------------------------------------------------

在一个wrap(32个线程)内所有的线程执行相同的指令,不需要执行同步点 threadsynchronize

gpu 规约算法2

在一个wrap内展开,一个wrap 内不会发生数据的竞争。这样的指令放在open mp 中不一定有效,对于gpu 这样做做是安全的。

gpu 规约算法2

线程的完全展开,在一个wrap内,线程是同步的,顺序不乱,因此不需要显示的同步

------------------------------------------------------------------

其他的优化技巧

1、__shared__     Volatile  //告诉编译器不要优化代码,否则计算结果可能会出错

GPU做为协处理器,供CPU调用。相比CPU线程,GPU 的线程是轻量级的,线程的启动开销小

尽量使wrap 内的线程执行的指令是相同的,

block 内线程不能太多也不能太少,太少延迟就很明显,太多的话,共享内存、寄存器资源不够,