admin管理员组文章数量:1663032
文章目录
- 问题
- 解决方案
- 先问问GPT
- 具体解决方案
- Reference
问题
make的时候遇到了这个问题:
[ 33%] Building CUDA object CMakeFiles/rasterise.dir/rasterise_egl.cu.o
nvcc fatal : Value ‘sm_30’ is not defined for option ‘gpu-architecture’
make[2]: *** [CMakeFiles/rasterise.dir/build.make:90:CMakeFiles/rasterise.dir/rasterise_egl.cu.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:83:CMakeFiles/rasterise.dir/all] 错误 2
make: *** [Makefile:91:all] 错误 2
解决方案
先问问GPT
它如是说:
这个错误提示表明在构建过程中使用了不被支持的GPU架构选项。通常情况下,这是因为您的CUDA代码中使用了不适用于您的GPU的特定架构选项。
要解决这个问题,您可以尝试以下几个步骤:
-
确保您的GPU支持使用的架构选项。您可以在NVIDIA官方文档中查找您的GPU型号,并确定支持的CUDA架构选项。请注意,不同的GPU型号支持的架构选项可能不同。
-
检查您的CUDA代码中的架构选项。在您的CUDA源代码文件(.cu文件)中,查找类似于
-arch
或--gpu-architecture
的选项,并确保选择了您的GPU支持的架构。常见的GPU架构选项包括sm_30
、sm_35
、sm_50
等。根据您的GPU型号和CUDA版本,选择合适的架构选项进行编译。 -
如果您的代码中使用了过时的架构选项,尝试将其更新为支持您的GPU的新架构选项。您可以在CUDA Toolkit的文档中找到有关不同架构选项的详细信息,并根据您的GPU型号进行更新。
-
检查您的构建系统配置。确保您的构建系统(例如CMake)中设置了正确的CUDA架构选项。您可能需要编辑CMakeLists.txt文件或相关的构建配置文件,以确保使用了适当的GPU架构选项。
通过以上步骤,您应该能够解决该错误并成功构建您的项目。如果问题仍然存在,请提供更多关于您的环境、GPU型号和使用的CUDA代码的详细信息,以便我们更好地帮助您解决问题。
具体解决方案
一步一步来,
-
我使用的GPU为RTX3090,cuda版本需要是11或以上
-
我这里用cuda11.3,参考英伟达官网给出的GPU、CUDA、sm_XX版本的对应关系:https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
发现报错中的sm_30已经是一个太老的版本了,我可以选择的最高版本为sm_86,来达到更好性能。 -
暂时未改cudatoolkits,直接试试第四步
-
在项目根目录中使用命令行工具执行以下命令来搜索CMakeLists.txt文件,或者直接在文件资源管理器里搜:
find . -name "CMakeLists.txt"
编辑CMakeLists.txt文件,找到原来的sm_30,替换为相应版本即可。
完成!重新cmake和make即可,不报错了。
Reference
一篇很通透的博文 -> nvcc fatal : Value ‘sm_XX‘ is not defined for option ‘gpu-architecture‘
版权声明:本文标题:【配环境】make时报错:Value ‘sm_30‘ is not defined for option ‘gpu-architecture‘ 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729977903a1218247.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论