Как получить архитектуру графического процессора устройства для CUVID?
Я реализую видеодекодер, используя функцию NVIDIA NvDec CUVID. Согласно главе 2 (крайне неадекватного) руководства, пределы декодирования определяются архитектурой графического процессора. т. е. максимальное разрешение по горизонтали h265 составляет 8192 на GP10x, 4096 на GP100 или менее, и не поддерживается на любой архитектуре, меньшей, чем GM206.
Как использовать CUDA для обнаружения таких архитектур? Я должен вывести это из вычислительных возможностей или как? И если я должен сделать вывод, есть ли таблица архитектур против вычислительных возможностей?
1 ответ
Хотя нет функции, которая возвращает кодовое имя графического процессора, 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);;
}