cuda核函数在运行时,使用<<<grid, block>>>语法设置执行线程配置,grid 和block的大小也影响并行程序的性能。
一般情况下,grid要大于SM的数目,这样才能让多处理器不至于空闲,同时也要考虑负载均衡的问题,grid大小必须是sm 数目的整数倍,否则计算到最后的时候,有一些SM可能会空闲。grid大小至少是SM的3倍,如果有块内同步的话,grid要大于SM的4倍以上。一般而言,block大小要是线程束大小的4倍以上,此时基本上可隐藏访存延迟。如果数据量比较小的话,grid大小和block大小可能相互牵制,此时要综合考虑。在数据量比较大的时候,只要考虑block大小就行了。