我正在尝试在结构中使用and 在reqRegs
运行时动态优化内核的块大小。sharedSizeBytes
cudaFuncAttributes
我当前的实现从标准输出文本中浏览nvcc --ptxas-options=-v
以发现内核的寄存器和共享内存使用情况。这种方法有点hacky,并且取决于输出文本的确切格式--ptxas-options=-v
,可能会在没有警告的情况下更改。
我的问题是我看到--ptxas-options=-v
输出中报告的“smem”共享内存值sharedSizeBytes
与cudaFuncAttributes
结构中的差异,这让我担心我一直使用的共享内存估计是错误的,或者sharedSizeBytes
变量不可靠,这意味着我不能将它用于运行时块大小优化。这是nvcc --ptxas-options=-v
一个这样的内核的输出......
ptxas info : Used 14 registers, 2088 bytes smem, 48 bytes cmem[1]
...与cudaFuncAttributes.sharedSizeBytes
运行时的值 = 296 相比,对于完全相同的内核。有人知道这里会发生什么吗?
这是另一个使用不同内核的示例:
ptxas info : Used 18 registers, 2132 bytes smem, 48 bytes cmem[1]
其中cudaFuncAttributes.sharedSizeBytes
= 340 在运行时。
谢谢。