⛳
Windows11 での xgboost gpu build 時のエラー
新しい Windows PC に xgboost gpu をビルドしようとしたところ、躓いたので解決方法をメモしておきます。
前提条件
- Visual Studio 2022 v17.3.4
- CUDA Toolkit v11.8
- Cmake v3.24.2
- xgboost v1.7.0
エラー内容
CUDA toolkit をインストールしているのにも関わらず No CUDA toolset found.
となり cmake できない。
PS C:\gitrepositories\xgboost\build> cmake .. -G"Visual Studio 17 2022" -DUSE_CUDA=ON
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.22000.
-- CMake version 3.24.2
-- xgboost VERSION: 1.7.0
-- Configured CUDA host compiler: C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.33.31629/bin/Hostx64/x64/cl.exe
CMake Warning at C:/Program Files/CMake/share/cmake-3.24/Modules/CMakeDetermineCUDACompiler.cmake:15 (message):
Visual Studio does not support specifying CUDAHOSTCXX or
CMAKE_CUDA_HOST_COMPILER. Using the C++ compiler provided by Visual
Studio.
Call Stack (most recent call first):
CMakeLists.txt:133 (enable_language)
CMake Error at C:/Program Files/CMake/share/cmake-3.24/Modules/CMakeDetermineCompilerId.cmake:491 (message):
No CUDA toolset found.
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.24/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
C:/Program Files/CMake/share/cmake-3.24/Modules/CMakeDetermineCompilerId.cmake:48 (__determine_compiler_id_test)
C:/Program Files/CMake/share/cmake-3.24/Modules/CMakeDetermineCUDACompiler.cmake:307 (CMAKE_DETERMINE_COMPILER_ID)
CMakeLists.txt:133 (enable_language)
-- Configuring incomplete, errors occurred!
See also "C:/GitRepositories/xgboost/build/CMakeFiles/CMakeOutput.log".
See also "C:/GitRepositories/xgboost/build/CMakeFiles/CMakeError.log".
解決方法
原因は Visual Sudio か CUDA Toolkit のどちらかの問題で両者の integration がうまく進んでいないよう。
そのため、手動でインテグレーションを行います。
1. 必要ファイルコピー
次の CUDA フォルダから、Visual Studio フォルダへ CUDA 関係のファイルをコピーします。
powershell
cd "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\extras\visual_studio_integration\MSBuildExtensions"
ls
CUDA 11.8.props
CUDA 11.8.targets
CUDA 11.8.xml
Nvda.Build.CudaTasks.v11.8.dll
powershell
Copy-Item * "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Microsoft\VC\v170\BuildCustomizations"
2. レジストリ設定
次のレジストリキーに CUDA フォルダの値を設定します。
HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\GPU Computing Toolkit\CUDA\v11.8
値の名前 | 種類 | データ |
---|---|---|
InstallDir | REG_SZ (文字列) | C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 |
以上で、cmake .. -G"Visual Studio 17 2022" -DUSE_CUDA=ON
のコマンドが通るようになりました。
Discussion