我正在使用NVidia的NvDec CUVID功能实现视频解码器。 根据(严重不足)手册的第2章,解码限制由GPU架构规定。也就是说,GP10x上的最大h265水平分辨率为8192,GP100上为4096或更低,而且在任何低于GM206的架构上都不支持。
如何使用CUDA检测此类架构?我是应该从计算能力推断它还是什么?如果我想推断它,是否有一个架构与计算能力表?
答案 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);;
}