次のように nvenc ハードウェアで利用可能な GPU をクエリできます。
cuResult = cuInit(0);
if (cuResult != CUDA_SUCCESS)
{
printf(">> GetNumberEncoders() - cuInit() failed error:0x%x\n", cuResult);
exit(EXIT_FAILURE);
}
checkCudaErrors(cuDeviceGetCount(&deviceCount));
if (deviceCount == 0)
{
printf(">> GetNumberEncoders() - reports no devices available that support CUDA\n");
exit(EXIT_FAILURE);
}
else
{
printf(">> GetNumberEncoders() has detected %d CUDA capable GPU device(s) <<\n", deviceCount);
for (int currentDevice=0; currentDevice < deviceCount; currentDevice++)
{
checkCudaErrors(cuDeviceGet(&cuDevice, currentDevice));
checkCudaErrors(cuDeviceGetName(gpu_name, 100, cuDevice));
checkCudaErrors(cuDeviceComputeCapability(&SMmajor, &SMminor, currentDevice));
printf(" [ GPU #%d - < %s > has Compute SM %d.%d, NVENC %s ]\n",
currentDevice, gpu_name, SMmajor, SMminor,
(((SMmajor << 4) + SMminor) >= 0x30) ? "Available" : "Not Available");
if (((SMmajor << 4) + SMminor) >= 0x30)
{
encoderInfo[NVENC_devices].device = currentDevice;
strcpy(encoderInfo[NVENC_devices].gpu_name, gpu_name);
NVENC_devices++;
}
}
}
NVENC 機能を備えた 8 つの GPU があります。
特定の NVENC ハードウェアが現在実行中またはアイドル状態であることを確認するにはどうすればよいですか。NVENC ハードウェアを監視する方法はありますか?
特定の NVENC API 関数 "OR" CUDA ドライバーまたは API 関数は、アイドル状態の GPU または NVENC ハードウェアを見つけるのに役立ちますか?
注:CUDAとNVENCハードウェアは完全に別のものであることは知っていますが、特定のNVENCのステータスを確認するための直接または間接(Cudaを使用して利用可能なNVENCハードウェアを指定するのと同じようにCuda APIを使用)の方法を探しています???