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 を指定することができます。
コメント