我在CUDA的网站上看到,要想有好的表现,我们应该考虑以下四点:
因此,我要回顾一下第一件事情max_threads_per_Block = 64; //maximum number of active threads per SM int max_threads = 2048;
这为每个SM提供了总共2048个线程,并保证了最大占用率max_threads_per_Block); dim3 num
因此,我决定使用共享内存,而不是寄存器,这些变量是块线程之间的常量,并且在整个内核运行过程中几乎是只读的。//rest of kernel现在,块内的翘曲线程执行广播读取,以访问新创建的共享内存变量。同时,线程不会使用太多寄存器来限制已实现的占用。
第二个程序的最大理论实现占用率等于%100。在实际运行中,第一个程序的平均占用率为百分之四十八,第二个程序的平均占有率为百分之八十左右。但是问题是,网络速度的提高大约在%5到%10之间,远远低于我所预期的,考虑到增加的入住率。还是增加了__syncth