CUDA – GPU の最大スレッド数・グリッド数を取得する

GPU の最大スレッド数・グリッド数の取得方法です。

CUDA プログラミングでカーネルを実行する際には、スレッド数とグリッド数を意識する必要があります。
これらの数値の最大数は GPU によって異なります。

これらの最大値を取得するためには、cudaGetDeviceProperties 関数を利用します。


int main()
{
    cudaDeviceProp device_prop;
    cudaGetDeviceProperties(&device_prop, 0);
    std::cout << "name : " << device_prop.name << '\n';

    std::cout
        << "max threads size per block: "
        << device_prop.maxThreadsPerBlock << "\n";

    std::cout
        << "max thread size           : "
        << device_prop.maxThreadsDim[0] << " x "
        << device_prop.maxThreadsDim[1] << " x "
        << device_prop.maxThreadsDim[2] << '\n';

    std::cout
        << "max grid size             : "
        << device_prop.maxGridSize[0] << " x "
        << device_prop.maxGridSize[1] << " x "
        << device_prop.maxGridSize[2] << '\n';

    return 0;
}

以下は、GeForce RTX 2080 での出力例です。

$ nvcc max_size.cu && ./a.out
name : NVIDIA GeForce RTX 2080
max threads size per block: 1024
max thread size           : 1024 x 1024 x 64
max grid size             : 2147483647 x 65535 x 65535

なお、もし GPU を2台以上搭載している場合は、cudaGetDeviceProperties 関数の第二引数で N番目の GPU を指定することができます。

CUDA Runtime API :: CUDA Toolkit Documentation (nvidia.com)

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次