Last update: 2024/12/15
今回は以下の環境でWindows PowerShellからCUDAのコンパイラを使い、コードをコンパイルする。
コンパイルするコードはhello_cuda.cuというファイルを作成して、以下の内容とした。
#include<stdio.h>
int main(int argc, char **argv)
{
printf("Hello CUDA!\n");
}
※Visual Studio 2022をインストールした際にWindows 11 SDKをインストールしていなかったためエラーが出たが、参考のためにあえて実施した手順をそのまま書いておく。
CUDAのコンパイラでコンパイルする場合、PowerShellを起動し、コードがおいてあるディレクトリで「nvcc hello_cuda.cu -o hello_cuda」を実行してコンパイルし、実行ファイルとしてhello_cudaを指定した。しかし、以下のエラーが出てコンパイルできず。
> nvcc hello_cuda.cu -o hello_cuda
nvcc fatal : Cannot find compiler 'cl.exe' in PATH
原因は、Visual Studioのホストコンパイラ(cl.exe)のPathを通っていないことだった。cl.exeはVisual Codeをインストールしたディレクトリにある。私の環境では以下にあった。
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
Windows11のツールバーの検索から「環境変数」などで検索し、システム環境変数の編集→環境変数→システム環境変数の中のPathを選んで「編集」をクリックし、環境変数名の編集を開いたら、「新規」をクリックして上記を追加する。追加したらOKを押す。(すべてOKを押してダイアログを閉じないと設定が反映されないので注意)
再びPowerShellを開き(開きっぱなしだったら一度閉じて再び開く)elと打って以下のようにVersion情報が表示されればPathが通っている。
> cl
Microsoft(R) C/C++ Optimizing Compiler Version 19.42.34435 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
ここで気づいたのだが、NVIDIAのCUDA Installation Guide for Microsoft Windowsによると、CUDA Tool kit 12.6 Update 3に対応しているコンパイラはMSVC Version 193xだが、現時点の最新版のVisual Studio 2022のMSVCはVersion 194xのようだ。
本来はCUDA Tool kitが対応しているコンパイラを使うべきだが、調べた限りVisual Studio Communityだと過去のVersionを指定してインストールすることはできないため、このまま進めてみる。
cl.exeのパスを通したところで、再びコンパイルを試みるも以下のエラーが出てコンパイルできず。
fatal error C1083: include ファイルを開けません。'corecrt.h':No such file or directory原因の調査に苦戦したが、結論から言うとVisual Studio 2022をインストールしたときにWindows 11 SDKをインストールしていなかったことが原因だった。前回使ったVisual Studio 2022のインストーラーを起動し、変更を選んでWindows 11 SDKを選択して追加でインストールする。
再度コンパイルを実行したところ、今度は無事に成功した。
> nvcc hello_cuda.cu -o hello_cuda
hello_cuda.cu
tmpxft_00002fac_00000000-10_hello_cuda.cudafe1.cpp
ライブラリ hello_cuda.lib とオブジェクト hello_cuda.exp を作成中
hello_cuda.exeを実行すると、無事に実行できた。
> .\hello_cuda.exe
Hello CUDA!
Cannot find compiler 'cl.exe' in PATH #C++ - Qiita
Visual Studio community2022を利用してnvcc を動かす
Windows 10 SDK(Windows Kits)のインストールディレクトリを移動する #Windows10 - Qiita
Copyright (c) 2024 kd