使用 Vulkan 确定 GPU 核心占用率的“便携式”方法

exa*_*exa 6 shader gpu compute-shader vulkan

对于编写 GPU 计算内核(在 GL/Vulkan 中又称为“计算着色器”),查询各种着色器参数(例如寄存器使用情况和共享内存使用情况)非常有用,这些参数确定可以调度到单个流式多处理器(SM 和nVidia、带有 AMD 的 CU 等)。

对于 AMD GPU,我们有一个适当的扩展,其中包含vkGetShaderInfoAMD,使用它可以获取有关占用的 VGPR/SGPR 和共享内存(又名 LDS)的一些信息,从而计算出对核心占用率的良好估计。

nVidia 和 Intel(可能还有其他)GPU 是否有任何此类可能性/扩展,或者是否有解决方法以其他方式测量特定硬件上 GLSL 着色器的属性?至少对于 nVidia 卡来说,该功能是在 CUDA 中实现的,但这对于调试 GLSL 着色器内容没有多大帮助。