【配环境】make时报错:Value ‘sm_30‘ is not defined for option ‘gpu-architecture‘

问题

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的特定架构选项。

要解决这个问题,您可以尝试以下几个步骤:

  1. 确保您的GPU支持使用的架构选项。您可以在NVIDIA官方文档中查找您的GPU型号,并确定支持的CUDA架构选项。请注意,不同的GPU型号支持的架构选项可能不同。

  2. 检查您的CUDA代码中的架构选项。在您的CUDA源代码文件(.cu文件)中,查找类似于-arch--gpu-architecture的选项,并确保选择了您的GPU支持的架构。常见的GPU架构选项包括sm_30sm_35sm_50等。根据您的GPU型号和CUDA版本,选择合适的架构选项进行编译。

  3. 如果您的代码中使用了过时的架构选项,尝试将其更新为支持您的GPU的新架构选项。您可以在CUDA Toolkit的文档中找到有关不同架构选项的详细信息,并根据您的GPU型号进行更新。

  4. 检查您的构建系统配置。确保您的构建系统(例如CMake)中设置了正确的CUDA架构选项。您可能需要编辑CMakeLists.txt文件或相关的构建配置文件,以确保使用了适当的GPU架构选项。

通过以上步骤,您应该能够解决该错误并成功构建您的项目。如果问题仍然存在,请提供更多关于您的环境、GPU型号和使用的CUDA代码的详细信息,以便我们更好地帮助您解决问题。

具体解决方案

一步一步来,

  1. 我使用的GPU为RTX3090,cuda版本需要是11或以上

  2. 我这里用cuda11.3,参考英伟达官网给出的GPU、CUDA、sm_XX版本的对应关系:https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/

    发现报错中的sm_30已经是一个太老的版本了,我可以选择的最高版本为sm_86,来达到更好性能。

  3. 暂时未改cudatoolkits,直接试试第四步

  4. 在项目根目录中使用命令行工具执行以下命令来搜索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‘

猜你喜欢

转载自blog.csdn.net/weixin_41932970/article/details/134989083