You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CUDA升级后CMake检测到编译器却无法识别GPU问题求助

解决升级CUDA后CMake无法检测GPU的问题

问题描述

升级CUDA至12.5版本后,原可正常构建的CUDA项目出现CMake报错:

CUDA_ARCHITECTURES is set to "native", but no GPU was detected.

已知环境信息:

  • 操作系统:Debian 12
  • CUDA版本:12.5(完整工具包已安装)
  • CMake版本:3.25.1
  • GPU:NVIDIA GeForce GTX 1650
  • nvidia-smi可正常显示GPU信息,which nvcc输出/usr/local/cuda/bin/nvcc

项目CMakeLists.txt中设置了CUDA_ARCHITECTURES native,CMake可检测到nvcc但无法自动识别本地GPU架构。

解决方案

方法1:直接指定GPU架构值

GTX 1650基于Turing架构,对应的CUDA架构值为7.5。将native替换为具体架构值,跳过CMake的自动检测步骤:

修改CMakeLists.txt中的目标属性配置:

set_target_properties(
        cuda_hello_world PROPERTIES
        CUDA_ARCHITECTURES 75
        CUDA_SEPARABLE_COMPILATION ON
)

方法2:确保CMake可正确调用nvidia-smi

CMake通过nvidia-smi检测本地GPU架构,若存在权限或路径问题会导致检测失败:

  1. 验证当前用户无需sudo即可执行nvidia-smi
  2. 若nvidia-smi不在系统PATH中,在CMakeLists.txt开头添加以下配置:
# 显式指定nvcc路径
set(CMAKE_CUDA_COMPILER "/usr/local/cuda/bin/nvcc")
# 确保nvidia-smi可被CMake找到
find_program(NVIDIA_SMI_PATH nvidia-smi)
if(NOT NVIDIA_SMI_PATH)
    message(FATAL_ERROR "nvidia-smi not found in system PATH")
endif()

方法3:升级CMake版本

CMake 3.25.x对CUDA 12.5的兼容性存在缺陷,升级至CMake 3.26及以上版本(推荐3.28+),新版本对CUDA 12.x系列的支持更完善。

验证步骤

执行以下命令重新构建项目:

rm -rf build && mkdir build && cd build
cmake ..
make

运行生成的可执行文件:

./cuda_hello_world

若输出Hello, World!,则说明项目已正常构建。

内容的提问来源于stack exchange,提问作者Rahn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:06:06