Cudaデバイスのコア数をカウントする機能を探しています。各マイクロプロセッサには特定のコアがあり、私のcudaデバイスには2つのマイクロプロセッサがあります。
マイクロプロセッサあたりのコア数をカウントするプロパティ関数を見つけるためにたくさん検索しましたが、できませんでした。以下のコードを使用していますが、それでもコアの数が必要ですか?
コード:
void printDevProp(cudaDeviceProp devProp)
{ printf("%s\n", devProp.name);
printf("Major revision number: %d\n", devProp.major);
printf("Minor revision number: %d\n", devProp.minor);
printf("Total global memory: %u", devProp.totalGlobalMem);
printf(" bytes\n");
printf("Number of multiprocessors: %d\n", devProp.multiProcessorCount);
printf("Total amount of shared memory per block: %u\n",devProp.sharedMemPerBlock);
printf("Total registers per block: %d\n", devProp.regsPerBlock);
printf("Warp size: %d\n", devProp.warpSize);
printf("Maximum memory pitch: %u\n", devProp.memPitch);
printf("Total amount of constant memory: %u\n", devProp.totalConstMem);
return;
}
マルチプロセッサあたりのコアは、「欠けている」唯一のデータです。そのデータはcudaDeviceProp
構造で直接提供されていませんが、 公開されたデータ と より公開されたデータdevProp.major
エントリとdevProp.minor
エントリから、デバイスのCUDA計算機能を構成します。
このようなものはうまくいくはずです:
int getSPcores(cudaDeviceProp devProp)
{
int cores = 0;
int mp = devProp.multiProcessorCount;
switch (devProp.major){
case 2: // Fermi
if (devProp.minor == 1) cores = mp * 48;
else cores = mp * 32;
break;
case 3: // Kepler
cores = mp * 192;
break;
case 5: // Maxwell
cores = mp * 128;
break;
case 6: // Pascal
if ((devProp.minor == 1) || (devProp.minor == 2)) cores = mp * 128;
else if (devProp.minor == 0) cores = mp * 64;
else printf("Unknown device type\n");
break;
case 7: // Volta and Turing
if ((devProp.minor == 0) || (devProp.minor == 5)) cores = mp * 64;
else printf("Unknown device type\n");
break;
default:
printf("Unknown device type\n");
break;
}
return cores;
}
(ブラウザでコード化)
「コア」はマーケティング用語の少しです。私の意見で最も一般的な意味合いは、SMのSPユニットと同等にすることです。これは、ここで示した意味です。これから、cc 1.xデバイスも省略しました。これらのデバイスタイプは、CUDA 7.0およびCUDA 7.5ではサポートされなくなりました
Linuxでは、次のコマンドを実行して、CUDAコアの数を取得できます。
nvidia-settings -q CUDACores -t
このコマンドの出力をCで取得するには、 popen 関数を使用します。
多分これはもう少し役立つかもしれません。
「GPUの計算機能レベルを取得し、各SMまたはSMXのコア(ストリームプロセッサ)の数を返すルーチン_ConvertSMVer2Cores(int major、int minor)を含むライブラリhelper_cuda.hがあります」-投稿から。