gpt4 book ai didi

c++ - CUDA ptxas 错误 "function uses too much shared data"

转载 作者:行者123 更新时间:2023-11-30 00:50:50 63 4
gpt4 key购买 nike

我以前从未使用过 CUDA 或 C++,但我正在尝试让 Ramses GPU 从 ( http://www.maisondelasimulation.fr/projects/RAMSES-GPU/html/download.html 运行。由于 autogen.sh 中的错误,我使用了 ./configure 并使它正常工作。因此生成的 makefile 包含以下 NVCcflags

 NVCCFLAGS = -gencode=arch=compute_10,code=sm_10  -gencode=arch=compute_11,code=sm_11 -gencode=arch=compute_13,code=sm_13  -gencode=arch=compute_20,code=sm_20  -gencode=arch=compute_20,code=compute_20 -use_fast_math -O3

But when I try to compile the program using make, I get multiple ptxas Errors:

Entry function '_Z30kernel_viscosity_forces_3d_oldPfS_S_S_iiiiiffff' uses too much    shared data (0x70d0 bytes + 0x10 bytes system, 0x4000 max)
Entry function '_Z26kernel_viscosity_forces_3dPfS_S_S_iiiiiffff' uses too much shared data (0x70d0 bytes + 0x10 bytes system, 0x4000 max)
Entry function '_Z32kernel_viscosity_forces_3d_zslabPfS_S_S_iiiiiffff9ZslabInfo' uses too much shared data (0x70e0 bytes + 0x10 bytes system, 0x4000 max)

我正在尝试在使用内核 2.6 和 CUDA 4.2 的 Linux 上编译此代码(我在我的大学尝试这样做,但他们不会定期升级东西。)在两个 NVIDIDA C1060 上。我尝试用 sm_20 替换 sm_10、sm_11 和 sm_13,(我在这里看到了这个修复:Entry function uses too much shared data (0x8020 bytes + 0x10 bytes system, 0x4000 max) - CUDA error)但这并没有解决我的问题。你有什么建议吗?如果您需要,我可以上传 Makefile 以及其他所有内容。感谢您的帮助!

最佳答案

您正在编译的代码需要为每个 block 静态分配 28880 字节 (0x70d0) 的共享内存。对于计算能力 2.x 和更新的 GPU,这不是问题,因为它们支持高达 48kb 的共享内存。但是,对于计算能力为 1.x 的设备,共享内存限制为 16kb(内核参数最多可使用其中的 256 字节)。因此,无法为 compute 1.x 设备编译代码,并且编译器生成一个错误告诉您这一点。因此,错误来自于向编译器指定 sm_13/compute_13。您可以删除它并且构建应该可以工作。

然而,情况变得更糟。 Tesla C1060 是一款计算能力为 1.3 的设备。因此,您将无法在 GPU 上编译和运行这些内核。除了从构建中省略这些内核(如果您不需要它们)或将代码向后移植到计算 1.x 体系结构之外,没有其他解决方案。我不知道这是否可行。或者寻找更现代的硬件来运行代码。

关于c++ - CUDA ptxas 错误 "function uses too much shared data",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23648525/

63 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com