使用CMake 3.26配置CUDA项目时CMAKE_CUDA_ARCHITECTURES报错问题
错误原因及修复方案
错误原因
CMake 3.26版本中,当手动指定CMAKE_CUDA_COMPILER路径时,CMake无法自动推断目标CUDA架构;同时如果CMAKE_CUDA_ARCHITECTURES变量已被设置(比如来自环境变量或缓存)但未赋予有效架构值,就会触发该错误。另外从CMake 3.24+开始,CUDA项目要求必须明确指定CMAKE_CUDA_ARCHITECTURES,手动指定编译器的场景下这一要求会被严格校验。
修复方案
方案1:在CMakeLists.txt中显式指定CUDA架构
修改你的CMakeLists.txt,添加架构指定代码,可根据需要选择目标GPU架构(以下为常见架构示例):
cmake_minimum_required(VERSION 3.25) project(foo CUDA) # 指定支持的CUDA架构,例如7.0(Turing)、8.0(Ampere)、8.6(Ampere) set(CMAKE_CUDA_ARCHITECTURES 70 80 86)
方案2:在cmake命令行中指定架构
执行cmake命令时直接传入CMAKE_CUDA_ARCHITECTURES参数:
cmake -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.2/bin/nvcc -DCMAKE_CUDA_ARCHITECTURES=70;80;86
方案3:让CMake自动推断架构(仅适用于本地有可用GPU的环境)
如果你的开发环境中装有NVIDIA GPU,可以设置CMAKE_CUDA_ARCHITECTURES为Auto,让CMake自动检测当前GPU的架构:
在CMakeLists.txt中设置:
cmake_minimum_required(VERSION 3.25) project(foo CUDA) set(CMAKE_CUDA_ARCHITECTURES Auto)
或在命令行中设置:
cmake -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.2/bin/nvcc -DCMAKE_CUDA_ARCHITECTURES=Auto
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

