register用多了 大概16个吧 每个thread里的计算量多了,访存次数少了 但是SM占有率低了
为了让register少一点 想保持10个 就又把kernel细化成两个kernel
但是细化的同时增加了参数表 访存的次数又增加了 虽然都是coalesced 但结果效果却没什么不同
问题大体就是如此 希望大家能来讨论讨论
谈谈自己这方面的经验
哈哈!~ 这里优化 是要针对具体的程序来做的呢!~
同上
SM占有率小并不能完全说明问题,很多时候小的占有率比大的效率更高,比如增加了寄存器的使用数量,但相应的浮点计算Ops/(浮点计算Ops+LD/ST Ops,这里的LD/ST操作比仅仅是指对global的LS操作,二是任何非寄存器存储器,比如共享内存 )的比率确提高很多,这时虽然SM占用率比较低,但效率却更高。如果是在大的循环中调用内核,则将不会改变参数值的内核参数在循环前放入常量内存,以后就从常量内存访问入口参数,而不需要每次都从host端传入