Как получить архитектуру графического процессора устройства для 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);;
}
Другие вопросы по тегам