Как работает Nvidia DLSS - не все так однозначно

В этой статье будет описан процесс работы технологии Nvidia DLSS. Но это лишь мои догадки.
31 января 2022, понедельник 14:00
Technics_logies для раздела Блоги

Кто не слышал про DLSS? И кто что знает об этой технологии? Буду рад вашим комментариям и мнениям по теме статьи.

Чтобы понять как работает DLSS нужно понять как работает видеокарта.
Возьмем условные RTX3060 и RTX3090.

Чем они занимаются?
Они считают как будут отображаться 3D модели в приложениях. В частности в играх. Какая блестит, какая отражает, какая поглощает свет и так далее.

В них есть ядра. Состоящие из транзисторов. Но для удобства понимания будем брать количество ядер CUDA. И сделаем их количество тоже условным. Округлим.

Например у RTX3060 будет 5 000 ядер CUDA.
Например у RTX3090 будет 10 000 ядер CUDA.

Видеокарта постоянно производит расчет визуализации основываясь на количестве ядер и тактовой частоте процессора видеокарты и ее памяти. Чем больше ядер и тактовая частота, тем быстрее идет расчет. 

Если 3090 считает один кадр в 4К за 1/100 секунды, мы получаем 100 кадров в секунду.
Тогда 3060 считает в два раза медленнее, за счет меньшего количества ядер. 50 кадров в секунду.

Но в этом случае видеокарта "напрягается". Она считает все эти отражения, преломления.
Но если мы смотрим фильм про супер героев, какой-нибудь, где много сложной и тяжелой для просчета в реальном времени 3D графики, то наша видеокарта не напрягается просчитывая ее. Она просто показывает уже просчитанное.

Так что же делает DLSS?
Она задействует тензоры.
Что такое тензоры?
Википедиа говорит:

"Использование тензоров в физике позволяет глубже понять физические законы и уравнения, упростить их запись (за счет сведения многих связанных физических величин в один тензор)".

Стало понятнее?
Если еще нет, идем дальше.

В видеокартах RTX есть тензорные ядра. Для чего же они?
Они для того, чтобы с помощью прогона на специальном своем компьютере игры, у которой будет поддержка DLSS, закодировать, например в 100 тензорных ядер определенное положение основных ядер.

Таким образом, уже нет реального просчета всей картинки. Некоторые значения основных ядер просто выставляются с помощью закодированных комбинаций в тензорных ядрах. Это соответственно ускоряет визуализацию изображения в игре и повышает количество кадров в секунду.

А что думаете вы?