目前,我尝试为我的内核获得更好的占用率,并使用占用率计算器和从 sdk 示例设备查询中获得的设备信息。我想知道块和流式多处理器(sm)的声明略有不同。在 sdk 示例中,它被称为
每个块的共享内存总量
和
每个块可用的寄存器总数
但在占用计算器中,这些信息是按 sm 计算的,这对我来说更有意义。
这只是 sdk 示例中的错误声明吗?
目前,我尝试为我的内核获得更好的占用率,并使用占用率计算器和从 sdk 示例设备查询中获得的设备信息。我想知道块和流式多处理器(sm)的声明略有不同。在 sdk 示例中,它被称为
每个块的共享内存总量
和
每个块可用的寄存器总数
但在占用计算器中,这些信息是按 sm 计算的,这对我来说更有意义。
这只是 sdk 示例中的错误声明吗?
我同意你的看法。
共享内存和寄存器是硬件资源,而块是软件编程模型的概念。
另一方面,我认为我们可以说一个块可以使用的最大共享内存量等于 GPU 设备的每个多处理器的共享内存总量。
官方文档 CUDA 编程指南也使用术语“每个多处理器共享内存”,如计算能力部分所示;