Cuda 我可以从内核中获得分配的动态共享内存量吗?
在主机端,我可以节省启动内核所需的动态共享内存量,并使用它。我甚至可以将其作为参数传递给内核。但是-有没有一种方法可以直接从设备代码中获取,而不需要主机端的帮助?也就是说,让内核的代码在运行时确定它有多少动态共享内存可用?是的,有一个特殊的寄存器保存该值。命名的。您可以在CUDA C/C++代码中通过使用getter函数封装一些内联函数来获取此寄存器的值:Cuda 我可以从内核中获得分配的动态共享内存量吗?,cuda,gpu-shared-memory,Cuda,Gpu Shared Memory,在主机端,我可以节省启动内核所需的动态共享内存量,并使用它。我甚至可以将其作为参数传递给内核。但是-有没有一种方法可以直接从设备代码中获取,而不需要主机端的帮助?也就是说,让内核的代码在运行时确定它有多少动态共享内存可用?是的,有一个特殊的寄存器保存该值。命名的。您可以在CUDA C/C++代码中通过使用getter函数封装一些内联函数来获取此寄存器的值: __device__ unsigned dynamic_smem_size() { unsigned ret; asm v
__device__ unsigned dynamic_smem_size()
{
unsigned ret;
asm volatile ("mov.u32 %0, %dynamic_smem_size;" : "=r"(ret));
return ret;
}
同样,您可以从寄存器中获取分配的共享内存的总大小(静态+动态)
%total\u smem\u size
@talonmies:是的,谢谢。至少我开始只依靠你做一些小的修改。。。