【初心者向け】WindowsのVisual Studio 2022でCUDA GPUプログラムを動かす方法

Uncategorized

今回は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 と表示されたら、正常に動いています。

以上です。

お疲れ様でした。

コメント

タイトルとURLをコピーしました