今回はWindows10のVisual Studio 2022でCUDAプログラミングする方法を解説します。
プロジェクトを作成する
新しいプロジェクトから 「 コンソールアプリ 」を作成してください。
プロジェクト名を「 test 」 とします。
プログラムを作成
下記のプログラムをコピペしてtest.cppに貼り付けてください。
下記のプログラムはNVIDA のDeveloper Blog https://developer.nvidia.com/blog/easy-introduction-cuda-c-and-c/から引用してきたものです。
#include <stdio.h>
__global__
void saxpy(int n, float a, float* x, float* y)
{
int i = blockIdx.x * blockDim.x + threadIdx.x;
if (i < n) y[i] = a * x[i] + y[i];
}
int main(void)
{
int N = 1 << 20;
float* x, * y, * d_x, * d_y;
x = (float*)malloc(N * sizeof(float));
y = (float*)malloc(N * sizeof(float));
cudaMalloc(&d_x, N * sizeof(float));
cudaMalloc(&d_y, N * sizeof(float));
for (int i = 0; i < N; i++) {
x[i] = 1.0f;
y[i] = 2.0f;
}
cudaMemcpy(d_x, x, N * sizeof(float), cudaMemcpyHostToDevice);
cudaMemcpy(d_y, y, N * sizeof(float), cudaMemcpyHostToDevice);
// Perform SAXPY on 1M elements
saxpy << <(N + 255) / 256, 256 >> > (N-10, 2.0f, d_x, d_y);
cudaMemcpy(y, d_y, N * sizeof(float), cudaMemcpyDeviceToHost);
float maxError = 0.0f;
for (int i = 0; i < N; i++)
maxError = max(maxError, abs(y[i] - 4.0f));
printf("Max error: %f\n", maxError);
cudaFree(d_x);
cudaFree(d_y);
free(x);
free(y);
}
次にソースファイルのtest.cppを名前変更でtest.cuに変更してください。cu拡張子はCUDAでCUDAのソースプログラムを動かすためにNVIDAが作成した拡張子です。
ビルドを行う
ビルドのカスタマイズ
testを右クリックし、ビルド依存関係 → ビルドカスタマイズ を選択します。
CUDA 11.6(.targets, .props)にチェックを入れます。
リンカーを追加
testを右クリックして 「プロパティ」 を選択します
左枠のリンカーから「入力」を選択し、右枠の「追加の依存ファイル」をクリックし編集します。
下のようなタブが出てきたら、cudart.lib と記載し「OK」を選択してください。
コンパイラーの選択
test.cuを右クリックし「プロパティ」を選択します
下のページが出てきたら 、
ビルドから除外 → 「いいえ」
項目の種類 → 「CUDA C/C++」
を選択してください。
実行する
以上が完了したら、「ローカル Windows デバッカー」をクリックしてください。
下のようなコンソールがに Max error: 0.000000 と表示されたら、正常に動いています。
以上です。
お疲れ様でした。
コメント