3

我正在使用 NVidia 的 NvDec CUVID 功能实现视频解码器。根据(严重不足)手册的第 2 章,解码限制由 GPU 架构指定。即,最大 h265 水平分辨率在 GP10x 上为 8192,在 GP100 上为 4096 或更小,并且在低于 GM206 的任何架构上均不受支持。

如何使用 CUDA 检测此类架构?我应该从计算能力中推断出来还是什么?如果我应该推断它,是否有架构与计算能力的表格?

4

1 回答 1

4

虽然没有返回GPU代号的函数,但NVIDIA提供cuvidGetDecoderCaps()API让用户查询底层硬件视频解码器的能力。

cuvidGetDecoderCaps()可以Video_Codec_SDK_x.x.x从 nvenc官方网站下载的详细示例。一个例子Samples/NvDecodeD3D11/NvDecodeD3D11.cpp

CUVIDEOFORMAT videoFormat = g_pVideoSource->format();
CUVIDDECODECAPS videoDecodeCaps = {};
videoDecodeCaps.eCodecType = videoFormat.codec;
videoDecodeCaps.eChromaFormat = videoFormat.chroma_format;
videoDecodeCaps.nBitDepthMinus8 = videoFormat.bit_depth_luma_minus8;
if (cuvidGetDecoderCaps(&videoDecodeCaps) != CUDA_SUCCESS)
{
    printf("cuvidGetDecoderCaps failed: %d\n", result);
    return;
}
if (!videoDecodeCaps.bIsSupported) {
    printf("Error: This video format isn't supported on the selected GPU.");
    exit(1);;
}
于 2017-05-19T02:45:05.570 回答