本文介绍了如何让cmake的CUDA找到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想建立,其中有CUDA作为一个依赖。但CMake的脚本无法找到系统上安装CUDA:

I am trying to build this project, which has CUDA as a dependency. But the cmake script cannot find the CUDA installation on the system:

cls ~/workspace/gpucluster/cluster/build $ cmake ..
-- The C compiler identification is GNU 4.7.1
-- The CXX compiler identification is GNU 4.7.1
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Error at /usr/share/cmake/Modules/FindCUDA.cmake:488 (message):
  Specify CUDA_TOOLKIT_ROOT_DIR
Call Stack (most recent call first):
  CMakeLists.txt:20 (find_package)

- 不完整的配置,出现了错误

-- Configuring incomplete, errors occurred!

我试着将其添加为一个环境变量的.bashrc ,没有效果:

I've tried adding it as an environment variable to .bashrc, to no effect:

export CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5

如何指定CUDA_TOOLKIT_ROOT_DIR 是否正确?

推荐答案

cmake的提到 CUDA_TOOLKIT_ROOT_DIR 作为CMake的变量,而不是环境之一。这就是为什么当你把它变成的.bashrc不工作。如果你看看FindCUDA.cmake它清楚地说:

cmake mentioned CUDA_TOOLKIT_ROOT_DIR as cmake variable, not environment one. That's why it does not work when you put it into .bashrc. If you look into FindCUDA.cmake it clearly says that:

该脚本会提示用户指定CUDA_TOOLKIT_ROOT_DIR如果preFIX
  不能NVCC的位置,在系统路径和要求的确定
  被指定到find_package()。要使用的不同的安装版本
  工具箱设置环境变量CUDA_BIN_PATH运行cmake的前
  (例如CUDA_BIN_PATH =的/ usr /本地/ cuda1.0而不是默认的/ usr /本地/ CUDA)
  或配置之后设置CUDA_TOOLKIT_ROOT_DIR。如果更改的值
  CUDA_TOOLKIT_ROOT_DIR,依赖路径上的各种组件将
  搬迁。

所以把 CUDA_BIN_PATH 到.bashrc或者指定 CUDA_TOOLKIT_ROOT_DIR 来cmake的:

So put CUDA_BIN_PATH into .bashrc or specify CUDA_TOOLKIT_ROOT_DIR to cmake:

cmake -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5 ..

这篇关于如何让cmake的CUDA找到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 04:59