如何获得CUVID设备的GPU架构?

时间:2017-05-16 18:14:17

标签: cuda cuvid nvdec

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

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

1 个答案:

答案 0 :(得分:3)

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

可以在从{nvenc official site下载的cuvidGetDecoderCaps()中找到Video_Codec_SDK_x.x.x的详细示例。 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);;
}