インストール環境
・Windows 7 Professional 64bit
・Intel Corei7-3770K
・16GB RAM
・Geforce GTX 780
・Visual Studio 2017 Version 15.7.0
Step 1. GPUの確認
ここにアクセスし、GPUがCUDAを使えるかを確認する。
Compute CapabilityはCUDAで使える機能の豊富さだとでも思っておけばよいです。
https://developer.nvidia.com/cuda-gpus
Step 2. ダウンロード
以下からCUDA Toolkit 10.0をダウンロードしてきます。
https://developer.nvidia.com/cuda-downloads
「Windows」を選択。
「7」を選択。
「exe(local)」を選択(exe(network)でも、特に問題ないと思いますので、こちらはお好みでどうぞ)。
「Download」を選択。
Step 3. インストール
ダウンロードしてきた「cuda_10.0.130_411.31_windows.exe」を実行し、
解凍します(解凍パスは一時的ものなので、どこでもよいです)。
使用許諾をよく読み「同意して続行する」をクリックします。
「カスタム」を選択し、「次へ」を押す。
CUDAのみだと後からの、インストール確認でエラー出ます。なので、最低でも、CUDA, Driver componentsにチェックを入れてください。
チェック後、「次へ」を押す。
「次へ」を押す。
インストール後のサマリが出る。「次へ」を押す。
「閉じる」を押す。これでCUDA 10.0のインストールは完了!
Step 4. インストール確認
下記フォルダにある「deviceQuery_vs2017.vcxproj」をVisual Studioで開く。
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\1_Utilities\deviceQuery
その後、ソリューション構成をRelease>deviceQueryを右クリック>ビルドで、次のフォルダにdeviceQuery.exeができます。
c:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\bin\win64\Release
コマンドプロンプトを開き、次のコマンドを実行。
"c:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\bin\win64\Release\deviceQuery.exe"
Result = PASSになっていれば、OK。
トラブルシューティング
- deviceQueryをビルドしたら、大量のエラーが出てきた!
(主にヘッダーファイル関連)- メニューバーのツール>ツールと機能を取得>個別のコンポーネントタブを選択>Windows ユニバーサル CRTにチェックが入っているか確認する。
チェックが入っていなければ、チェックを入れてインストールする。 - インストールしても同じエラーが出る場合は、ソリューションのプロパティ>VC++ ディレクトリ>インクルード ディレクトリに下記パスを入れる。
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\ucrt
Visual Studioで前のバージョンのSKDを指定してたりすると、SKDバージョンのエラーが出るので、ソリューションを右クリックし、プロジェクトの再ターゲットをすることでエラーが消えます。
- メニューバーのツール>ツールと機能を取得>個別のコンポーネントタブを選択>Windows ユニバーサル CRTにチェックが入っているか確認する。
- deviceQuery.exeを実行したら、Result = FAILになった。主に下記エラー内容。
deviceQuery.exe Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 35
-> CUDA driver version is insufficient for CUDA runtime version
Result = FAIL
これは、CUDA driverのバージョンが低いとこうなってしまう。
Nvidia コントロールパネル>ヘルプ>システム情報>コンポーネントを確認して、NVCUDA.DLLが10.0以下だと上記エラーになる。これは、基本的にインストール時に、Driver Componentsをチェックしておくことで防げます。チェックし忘れていたら、もう一度入れ直せば、OKです。