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++;
        }
    }
}

NVENC 機能を備えた 8 つの GPU があります。

特定の NVENC ハードウェアが現在実行中またはアイドル状態であることを確認するにはどうすればよいですか。NVENC ハードウェアを監視する方法はありますか?

特定の NVENC API 関数 "OR" CUDA ドライバーまたは API 関数は、アイドル状態の GPU または NVENC ハードウェアを見つけるのに役立ちますか?

注:CUDAとNVENCハードウェアは完全に別のものであることは知っていますが、特定のNVENCのステータスを確認するための直接または間接(Cudaを使用して利用可能なNVENCハードウェアを指定するのと同じようにCuda APIを使用)の方法を探しています???

4

2 に答える 2

1

この質問について:

特定の ... NVENC ハードウェアがアイドル状態であるかを見つけるのに役立つ CUDA ドライバーまたは API 関数はどうですか?

ありません。

NVENC と CUDA は直交しています。CUDA にアクセスして管理する API は、NVENC にアクセスして管理する API とは完全に分離されています。ここに示したコードは、システム内の GPU を識別し、たまたま CUDA API を使用してそれを行いますが、それ以外の場合、質問は CUDA とは関係ありません。NVENC ハードウェアで何でもできるようにする CUDA API 関数はありません。

最終的に、NVENC ハードウェアの管理は、NVENC API を使用しているクライアント アプリケーションの責任です。このクライアント アプリケーションは、必要に応じて、ビジー/非ビジー ステータスを他のアプリケーションのアップストリームで簡単に利用できるようにすることができます (管理しているハードウェアの個々のステータスを認識しているため)。

于 2013-08-09T21:14:31.517 に答える