我们可以像这样使用 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++;
}
}
}
我有 8 个带有 NVENC 功能的 GPU:
我们如何检查特定的 NVENC 硬件现在是否正在运行或空闲。有什么方法可以监控 NVENC 硬件吗?
帮助我找出哪个 GPU 或 NVENC 硬件空闲的特定 NVENC API 函数“OR”CUDA 驱动程序或 API 函数怎么样?
注意:我知道 CUDA 和 NVENC 硬件是完全独立的东西,但我正在寻找直接或间接(使用 Cuda API,例如使用 Cuda 来指定可用的 NVENC 硬件)检查特定 NVENC 状态的方法???