pee*_*ush 4 cuda memory-optimization
我在cuda中编写了一个应用程序,它在每个块中使用1kb的共享内存.由于每个SM中只有16kb的共享内存,所以整体上只能容纳16个块(我理解它是否正确?),虽然一次只能调度8个,但现在如果某个块忙于进行内存操作,所以其他块将在gpu上进行调度,但是所有共享内存都被已经在那里安排的其他16个块使用,所以cuda不会在同一个sm上安排更多的块,除非先前分配的块完全完成?或者它会将一些块的共享内存移动到全局内存,并在那里分配其他块(在这种情况下,我们应该担心全局内存访问延迟吗?)
它不像那样工作.计划在单个SM上的任何给定时刻运行的块数始终是以下的最小值:
这就是它的全部.共享内存没有"分页"以容纳更多块.NVIDIA生成一个计算入住率的电子表格,随工具包提供,可单独下载.您可以在其包含的公式中查看确切的规则.它们也在CUDA编程指南的4.2节中讨论.