首页 > 解决方案 > 每个 SM 活动的线程块

问题描述

如何在我的 gtx780 的 40kB 共享内存上发现有多少线程块可能同时处于活动状态?如何查看每个 SM 的最大入住人数?

标签: cudagpugpgpu

解决方案


最大占用率取决于您的块大小、每个线程内核函数所需的寄存器数量以及每个块所需的共享内存量。您可以根据设备特定的限制自行计算,您可以查询。如果您使用的是相当新的 CUDA 版本,则驱动程序 API运行时 API具有计算占用率的功能。

请注意,您将只能计算理论上的最大入住率。无论您如何计算该数字,都不能保证这是始终在设备上运行的实际数字。使用此数字作为指导,例如,确定最适合运行的启动配置。但是不要编写代码来依赖于实际同时运行的特定数量的块。获得保证同时运行的块数量的唯一方法是使用 CUDA 9+ 中相当新的 Cooperative Kernel Launch 功能......</p>


推荐阅读