0

我们可以像这样使用 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 状态的方法???

4

2 回答 2

2

您可以使用此命令以间接方式监视您的 NVENC 硬件是否处于活动状态

nvidia-smi 

查看特定的 NVENC 硬件是忙还是闲,因为当你想使用特定的 NVENC 时,你应该首先在那个 GPU 上创建一个 cuda 线程,并使用它的内存,所以通过检查 GPU 的状态,我们可以将它扩展到它的 NVENC硬件。

于 2013-08-17T00:57:28.840 回答
1

关于这个问题:

那么具体的...... CUDA 驱动程序或 API 函数可以帮助我找出哪些...... NVENC 硬件是空闲的?

没有了。

NVENC 和 CUDA 是正交的。访问和管理 CUDA 的 API 与访问和管理 NVENC 的 API 完全分开。您在此处显示的代码标识了系统中的 GPU,并且恰好使用 CUDA API 来执行此操作,但您的问题与 CUDA 无关。没有 CUDA API 函数可以让您对 NVENC 硬件进行任何操作。

最终,管理 NVENC 硬件是使用 NVENC API 的客户端应用程序的责任。如果需要,此客户端应用程序可以轻松地使上游其他应用程序可以使用忙碌/非忙碌状态(因为它知道它正在管理的硬件的各个状态。

于 2013-08-09T21:14:31.517 回答