寄存器和共享内存取决于编译计算能力?

发布于 2024-11-08 06:14:58 字数 510 浏览 0 评论 0原文

当我使用 nvcc -arch=sm_13 编译时,我得到:

ptxas info    : Used 29 registers, 28+16 bytes smem, 7200 bytes cmem[0], 8 bytes cmem[1] 

当我使用 nvcc -arch=sm_20 时,我得到:

ptxas info    : Used 34 registers, 60 bytes cmem[0], 7200 bytes cmem[2], 4 bytes cmem[16] 

我认为所有内核参数都传递到共享内存,但是对于sm_20,好像不是这样……?! 也许它们也被传递到寄存器中?我的函数的头部如下所示:

__global__ void func(double *, double , double, int)

到目前为止谢谢!

when I compile with nvcc -arch=sm_13 I get:

ptxas info    : Used 29 registers, 28+16 bytes smem, 7200 bytes cmem[0], 8 bytes cmem[1] 

when I use nvcc -arch=sm_20 I get:

ptxas info    : Used 34 registers, 60 bytes cmem[0], 7200 bytes cmem[2], 4 bytes cmem[16] 

I thought all the kernel parameters are passed to shared memory but for sm_20, it doesn't seem so...?!
Perhaps they are also passed into registers? The head of my function looks like the following:

__global__ void func(double *, double , double, int)

Thanks so far!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

微暖i 2024-11-15 06:14:58

正如 @talonmies 所说,共享内存差异是由于 SM 2.x 设备通过常量而不是共享内存传递内核参数造成的。

然而,SM 2.x 设备中寄存器使用的主要区别之一是,虽然 SM 1.x 设备具有用于加载和存储指令的专用地址寄存器,但 SM 2.x 使用通用寄存器来存储地址。这往往会增加 SM 2.x 的寄存器压力。幸运的是,GF100 (SM 2.0) 的寄存器文件比 GT200 (SM 1.3) 大 2 倍。

As @talonmies states, shared memory differences are due to SM 2.x devices passing kernel arguments via constant rather than shared memory.

However one of the main differences in register usage in SM 2.x devices is the fact that while SM 1.x devices have dedicated address registers for load and store instructions, SM 2.x uses general-purpose registers for addresses. This tends to increase register pressure on SM 2.x. Luckily the register file is also 2x larger on GF100 (SM 2.0) vs. GT200 (SM 1.3).

空城缀染半城烟沙 2024-11-15 06:14:58

在计算能力 2.x 设备中,内核参数存储在常量内存中。寄存器差异可能归因于版本之间为数学库函数生成的代码的差异。内核中是否有诸如超越函数或 sqrt 之类的东西?

In compute capability 2.x devices, arguments to kernels are stored in constant memory. The register difference is probably down to differences in the code generated for math library functions between versions. Are there things like transcendental functions or sqrt in the kernel?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文