私は このプロジェクト をビルドしようとしていますが、これには依存関係としてCUDAがあります。しかし、cmakeスクリプトはシステム上のCUDAインストールを見つけることができません。
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)
-不完全な構成、エラーが発生しました!
私はそれを.bashrc
に環境変数として追加しようとしましたが、効果はありません:
export CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5
Specify CUDA_TOOLKIT_ROOT_DIR
を正しく行う方法
cmakeはCUDA_TOOLKIT_ROOT_DIR
を環境変数ではなくcmake変数として言及しました。そのため、.bashrcに入れると機能しません。 FindCUDA.cmakeを調べると、次のことがはっきりとわかります。
スクリプトは、システムパス内のnvccの場所によってプレフィックスを決定できず、find_package()にREQUIREDが指定されている場合、CUDA_TOOLKIT_ROOT_DIRを指定するようにユーザーに要求します。別のインストール済みバージョンのツールキットを使用するには、cmakeを実行する前に環境変数CUDA_BIN_PATHを設定します(たとえば、デフォルトの/ usr/local/cudaの代わりにCUDA_BIN_PATH =/usr/local/cuda1.0)、または構成後にCUDA_TOOLKIT_ROOT_DIRを設定します。 CUDA_TOOLKIT_ROOT_DIRの値を変更すると、パスに依存するさまざまなコンポーネントが再配置されます。
したがって、CUDA_BIN_PATH
を.bashrcに入れるか、CUDA_TOOLKIT_ROOT_DIR
をcmakeに指定します。
cmake -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5 ..
FindCMake.cmake
探す /usr/local/cuda
。あなたの場合、そのディレクトリはそこにないかもしれません。実際のCUDAインストールディレクトリへのその名前のシンボリックリンクを作成するだけです:
$ Sudo ln -s /usr/local/cuda-5.5 /usr/local/cuda
これで、CMakeはプロジェクトのMakefileを生成できるはずです。
Cudaはソースからインストールされた可能性があります(nvccはパスに含まれていません)。その後、 'nvcc'がないため、スクリプトはCUDA_TOOLKIT_ROOT_DIRを設定できません。私にとっては、「Sudo apt install nvidia-cuda-toolkit」を実行した後、正常に機能しました。
CMake 3.8以降、FindCUDAは廃止され、CMakeプロジェクトでCUDAを使用する適切な方法は、project()
またはenable_language()
を介して有効にすることです。
ターミナルで、nano ~/.bashrc
と入力します。次に、ファイルに次の行を追加します。
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/lib
export CPLUS_INCLUDE_PATH=/usr/local/cuda/include
ファイルを保存し、ターミナルに「source ~/.bashrc
」と入力します。
ターミナルでnvcc --version
と入力して、CUDAパスがセットアップされているかどうかを検証できます。