Intel Quick Sync Video
Продолжение статьи GPU ускорение в Adobe Premiere Pro CC 2018.1 и разговора о включении аппаратного декодирования и кодирования видео, начатого в этом видео: «Снимаем галку ImporterMPEG.disable_MTS_hwdec».
Утилита GPU-Z показывает, что у нас активна интегрированная видеокарта Intel Iris Pro Graphics 6200 (GT3e) и стоит галка перед пунктом OpenCL.
Информация с утилиты GPUSniffer:
В программе Adobe Premiere Pro CC 2018 выполняем команду: Изменить > Установки > Медиаконтент (Edit > Preferences > Media) и проверяем галку перед пунктом: Включить декодирование с аппаратным ускорением / Enable hardware accelerated decoding.
Если выполняются аппаратные требования и минимальные требования к операционной системе, для декодирования H.264/HEVC используется аппаратное ускорение.
Запускаем воспроизведение AVCHD 2.0 видео на таймлайне, с включенным движком: Аппаратное GPU-ускорение ядра Mercury Playback (OpenCL) и опцией GF.ProfileKernels.
Чтобы это выяснить на 100%, вызываем панель Debug Monitor, с помощью комбинации клавиш: Ctrl+Alt+F12. Открываем закладку Importer.MPEG и видим два пункта: SW Frames Decompressed (софтовое декодирование видео, силами только центрального процессора) и HW Frames Decompressed (аппаратное декодирование видео).
Т.е. счетчик активно работал только на пункте SW Frames Decompressed. Давайте попробуем выяснить чем же занималась интегрированная видеокарта (и почему только по ее загрузке, нельзя судить работает ли декодирование). Переключаемся на софтовый движок: Только программное ускорение ядра Mercury Playback / Mercury Playback Engine Software Only.
Запускаем воспроизведение AVCHD 2.0 видео на таймлайне:
Загрузку интегрированной графики Intel Iris Pro Graphics 6200 (GT3e) уменьшится с 91% до 36%, а потребление с 21.9Вт до 6.5Вт.
Помимо этого и PF: в различных режимах, для одного и того же видео, может быть разный. Т.е. для каких-то форматов может быть нативный, для каких-то целый зоопарк.
Снимаем галку напротив пунтка GF.ProfileKernels.
Импортируем UHD видео с квадрокоптера DJI и видим его стандартное PF: YUV 420 MPEG4 Frame 8u 709 ImporterMPEG.
Если переключиться с режима OpenCL Render System на режим Software Render System (Только программное ускорение ядра Mercury Playback / Mercury Playback Engine Software Only), то получим уже PF: VUYX 4444 8u 709 ImporterMPEG.
Ставим галку напротив пункта: DisableGPUMediaNode, чтобы запретить изменение PF: при смене движков OpenCL Render System / Software Render System / GPU Mercury Playback (OpenCL) и т.д.
Запускаем воспроизведение на таймлайне, и получаем OpenCL Render System и PF: VUYX 4444 8u 709 ImporterMPEG, как у Software Render System.
И получаем: GPU Mercury Playback (OpenCL) и PF: VUYA 4444 8u 709, также можно включить режим PF: BGRA 4444 8u и т.д.
Если в Настройках экспорта в закладке: Видео > Параметры кодирования > Производительность, невозможно выбрать другой режим, кроме Программное кодирование.
То, нажимаем комбинацию клавиш: Ctrl+F12 (Windows), далее в панели Console (Консоль), переключаемся на режим Debug Database View. И ставим галку напротив пункта: DVA.HWEncoding.AlwaysEnableHWEncoding.
Эта опция позволяет всегда делать список Производительность: доступным.
При выборе режима Производительность: Аппаратное кодирование. Появится ошибка с сообщением: Оборудование вашей системы не поддерживает текущие настройки аппаратного ускорения. ОК.
Включаем режим симуляции: DVA.UI.SimulateHWEnc.
Теперь можно выбрать режим Производительность: Аппаратное кодирование.
Запустится процесс кодирования, но интегрированная видеокарта в нем участие не будет принимать.
Все кодирование будет производиться только силами центрального процессора (CPU).
В логах консоли, видно что был запрос на аппаратное кодирование видео (аппаратный ускоритель H.264 видео) в формат H.264: Looking for H/W codecs dor H.264.
Также, для интегрированной графики можно включить или отключить поддержку OpenCL. Например, встречается проблема, когда какой-то OpenCL плагин (Red Giant Magic Bullet Denoiser III), который даже не поддерживает ускорение с помощью интегрированной графики, начинает использовать ее для «ускорения», вместо дискретной nVidia.
Нажимаем комбинацию клавиш: Win+R и в окне Выполнить, вбиваем regedit. ОК.
Далее, идем в следующие ветки реестра:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors\
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Khronos\OpenCL\Vendors\
Находим пункт IntelOpenCL64.dll, нажимаем на нем правую кнопку мыши и выбираем: Изменить.
Вбиваем значение: 1 (отключить) или 0 (включить). ОК.
Смотрим на полученный результат:
Перезагружаем ПК и смотрим с помощью GPU-Z стоит или нет галка перед пунктом: OpenCL.
Запускаем утилиту GPUSniffer и при выставленной 1, в разделе поддержки OpenCL, находим сообщение: Did not find any devices that support GPU computation.
*В версии драйверов: 24.20.100.6194, исправлена проблема видео в Adobe Premiere Pro CC 2019 (до и после рендеринга), которое могло быть повреждено или неправильно отрисовано. Эту версию драйвера для интегрированной графики Intel, можно считать базовой.
*Про настройку параметра задержки воспроизведения PlaybackLatency читаем здесь.
Аппаратное GPU-ускорение ядра Mercury Playback (OpenCL)
Протестируем интегрированную графику Intel HD Graphics 530 (GT2) используя OpenCL ускорение в программе Adobe Premiere Pro CC 2015.3. Аппаратное GPU-ускорение ядра Mercury Playback (OpenCL) доступно для интегрированной графики Intel HD Graphics 530. Вот информация:
В настройках программы Изменить > Установки > Медиаконтент (Edit > Preferences > Media) снимаем галку: Включить декодирование Intel h.264 с ускорением (требуется перезапуск) / Enable accelerated Intel h.264 decoding (requires restart).
Четырехъядерный процессор Intel Core i5-6500 с интегрированным графическим ядром Intel HD Graphics 530 (GT2) работал на тактовой частоте 3.6ГГц (множитель х36).
Объем используемое памяти при рендеринге — Adobe Media Encoder.exe: 772Мб, загрузка процессора: 15.6%.
Процессор Intel Core i5-6500 работал на частоте 3.4ГГц, его загрузка составила: 18%.
Интегрированная графика Intel HD Graphics 530 при рендеринге была полностью загружена: 100% и работала на частоте 1ГГц. Memory Usage: 983Мбайта.
Итоговое время рендеринга с использованием штатного кодека Mainconcept H.264, составило: 8 минут и 24 секунды (против 5 минут для Intel Iris Pro Graphics 6200 при работе с памятью DDR3-1600).
Выбираем средство рендеринга: Только программное ускорение ядра Mercury Playback.
Так как загружены все 4х ядра процессора Intel Core i5-6500, то рабочая частота составила 3.3ГГц.
Adobe Media Encoder.exe использует во время рендеринга 99.3% мощности процессора, и 1Гб оперативной памяти DDR3-1600.
100% загрузка процессора Intel Core i5-6500:
Интегрированная графика Intel HD Graphics 530 в рендеринге участие не принимала, и работала на 2D частотах.
Итоговое время рендеринга только силами центрального процессора: 10 минут и 14 секунд.
Аппаратное декодирование
Про совместное использование нескольких видеокарт в программе Adobe Premiere Pro CC на сайте выложено много материала, но количество вопросов не снижается. Очередная попытка кратко объяснить как всё это работает и как настроить совместную работу нескольких видеокарт в версии программы Adobe Premiere Pro CC 2020.
Какое количество видеокарт в работе поддерживает программа Adobe Premiere Pro CC 2020?
Ответ: 6 видеокарт. Они распределяются следующим образом:
— Одна интегрированная видеокарта процессора Intel Core.
— Одна видеокарта которая будет отвечать за интерфейс (т.е. работу OpenGL) с отключенным движком CUDA/OpenCL.
— И четыре видеокарты могут работать в Multi-GPU режиме. Т.е. выполнять CUDA/OpenCL вычисления.
Можно ли для аппаратного декодирования использовать интегрированную видеокарту APU процессоров AMD?
Ответ: нет. Не подходят ни интегрированные видеокарты от AMD, ни распаянные видеокарты от ASPEED и т.д. Так как аппаратное декодирование использует Intel Media SDK и технологию Intel Quick Sync Video.
У меня стоит дискретная видеокарта, почему в настройках экспорта пункт «С аппаратным ускорением (Hardware Accelerated)» неактивен?
Ответ: аппаратное кодирование, как и декодирование, использует Intel Media SDK и технологию Intel Quick Sync Video и работает только на интегрированных видеокартах процессоров Intel Core. Для аппаратного кодирования с помощью дискретных видеокарт, необходимо использовать сторонние плагины.
*В версии программы Adobe Premiere Pro CC 2020 (v14.2) и выше, добавили аппаратное кодирование на дискретных видеокартах AMD и NVIDIA.
Теперь рассмотрим как включить и настроить типичную работу интегрированной видеокарты (iGPU) и дискретной видеокартой в программе Adobe Premiere Pro CC 2020.
Если у нас ноутбук, то две видеокарты по-умолчанию активны, и автоматически переключаются в зависимости от запущенного приложения. Есть и исключения, например: Lenovo Legion Y540-15IRH.
Если у нас ПК, то необходимо в BIOS включить интегрированную видеокарту для совместной работы с дискретной. Подключить монитор к дискретной видеокарте (чтобы она была главной и отвечала за OpenGL). Подробнее о настройках BIOS и подключении читаем здесь.
В систему необходимо поставить драйвера для интегрированной видеокарты, скачанные с официального сайта. После этого утилита GPU-Z видить интегрированную видеокарту, отображать актуальный драйвер (а не дефолтный операционной системы) и должна стоять галка перед пунктом OpenCL.
При запуске программы Adobe Premiere Pro CC 2020 может появиться окно System Compatibility Report (Отчёт о совместимости системы), которое проинформирует, если версия драйвера для интегрированной видеокарты ниже рекомендованной.
*Отключить это окно можно в настройках Общие (General), сняв галку перед пунктом Показать проблемы с совместимостью с системой при запуске (Show system compatibility issues at startup).
После запуска программы в настройках проекта доступно для выбора два аппаратных движка Mercury Playback Engine GPU Acceleration: CUDA и OpenCL. За последний отвечает интегрированная видеокарта, так как OpenCL ускорение для видеокарт nVidia было заблокировано в предыдущих версиях программы.
Теперь необходимо включить аппаратное декодирование с помощью интегрированной видеокарты в настройках программы. Выполняем команду: Изменить > Установки > Медиаконтент (Edit > Preferences > Media).
И проверяем наличие галки перед пунктом Включить декодирование с аппаратным ускорением (требуется перезапуск) / Enable hardware accelerated decoding (requires restart).
*В более поздних обновлениях эта команда стала называться: Включить аппаратное кодирование и декодирование с ускорением (требуется перезапуск) / Enable hardware accelerated encoding and decoding (requires restart).
Если галки нет, то ставим её и перезагружаем Adobe Premiere Pro CC 2020, чтобы изменения вступили в силу:
Теперь запускаем утилиту GPUSniffer и проверяем, чтобы дискретная видеокарта отвечала за OpenGL (т.е. была главной в системе, так как к ней подключён монитор/ы).
И в разделе GPU Computation Info была прописана интегрированная видеокарта, и не было никаких примечаний с * в начале.
Теперь переходим к видео на таймлайне, интегрированная видеокарта поддерживает аппаратное декодирование только форматов: H.264 и H.265 (HEVC). Но также на аппаратное декодирование может влиять частота кадров, величина битрейта и цветовая выборка. Например, нет поддержки декодирования видео H.264/HEVC с цветовой выборкой 422:
Цветовую выборку 422 аппаратно не могут декодировать и дискретные видеокарты, исключение это новая интегрированная графика Gen11 и Gen12 Xe, которая используется в 10-нм мобильных процессорах Intel Core 10-го и 11-го поколения Intel Ice Lake-U и Intel Tiger Lake-U. Но, только для H.265/HEVC видео.
10-битное H.265/HEVC видео с цветовой выборкой 4:2:2 снимают следующие камеры: Sony A7S III, Canon EOS R5, Canon EOS R6 и т.д.
Поэтому на видео которое собираемся декодировать на таймлайне, нажимаем правую кнопку мыши и выбираем Свойства (Properties). И проверяем его характеристики и можно ли такое видео аппаратно декодировать.
Проверяем чтобы штатный декодер ImporterMPEG работает аппаратно. В панели Debug Monitor (Ctrl+Alt+F12) в закладке ImporterMPEG следим за работой аппаратного ускорения (декодирования видео), кадры должны бежать напротив пункта HW Frames Decompressed.
*Если при нажатии комбинации клавиш Ctrl+Alt+F12 ничего не происходит, то читаем пункт 2.
Иногда аппаратное декодирование может включаться и на старых, не поддерживаемых интегрированных видеокартах. Как пример: Intel HD Graphics 4600. Утилита GPUSniffer показывает, что всё активно:
HW Frames Decompressed работает:
На ноутбуке был установлен драйвер Intel Graphics версии 20.19.15.4549.
*В версии программы Adobe Premiere Pro CC 2020 работают почти все старые интегрированные видеокарты (iGPU), начиная с Intel HD Graphics 4000 (Ivy Bridge).
Предпринимались различные попытки разобраться, что влияет на активацию интеграшки. Но отследить закономрености не удалось.
Для справки аналогичное ускорение в версии программы Adobe Premiere Elements 2020 работает с графикой Intel HD Graphics 2000 и выше. А для программа Adobe Premiere Pro CC это процессоры Broadwell (Intel Core 5-го поколения).
А аппаратное декодирование HEVC видео, было добавлено в процессоры Skylake (Intel Core 6-го поколения).
Есть ли аппаратное декодирование H.264 и HEVC видео с помощью дискретных видеокарт?
На данный момент для версии Adobe Premiere Pro 2020 (v14.3) нет такой штатной возможности. Но, есть бесплатный плагин Cinegy TurboCut который позволяет на видеокартах Nvidia с чипсетами Pascal/Turing реализовать аппаратное декодирование видео в программе Adobe Premiere Pro 2020.
*Также в Adobe Premiere Pro 2020 v14.3.2.20 Beta добавлены команды для активации штатного аппаратного декодирования видео на дискретных видеокартах AMD и Nvidia. Это следующие команды: ImporterMPEG.Feature.Enable_AMD_Decode, ImporterMPEG.Feature.Enable_AMD_Decode_Reset и ImporterMPEG.Feature.Enable_Nvidia_Decode.
Появилось окно Ожидание медиаданных, что делать?
Ожидание медиаданных (Media pending) может появиться при смене декодеров, или смене режимов декодирования.
Вот стандартный декодер для работы с 4K UHD H.264 видео, PF: YUV 420 MPEG4 Frame BiPlanar 8u 709 ImporterMPEG.
Идём в Консоль и активируем пункт: DS.ForceCPUOnly.
В настройках проекта получаем серое поле, Средство рендеринга: Только программное ускорение ядра Mercury Playback.
Движок сменится на Software Render System, но PF: останется прежним YUV 420 MPEG4 Frame BiPlanar 8u 709 ImporterMPEG.
Теперь в Консоли активируем пункт: GF.DisableAcceleratedDisplay.
Сменился и движок, на: GPU Mercury Playback (CUDA) и декодер, на следующий PF: VUYA 4444 8u 709. Но, картинка в окне Программа отображается.
Теперь наоборот, не устанавливаем, а снимаем в Console (Консоль) галку напротив пункта ImporterMPEG.UseBiPlanarPixelFormat_8b.
И получаем жёлтое окно: Ожидание медиаданных (Media pending).
CUDA Render System и PF: YUV 420 MPEG4 8U 709 ImporterMPEG.
.
Установка драйверов для интегрированной графики.
Убираем лаги при воспроизведении таймлайна.
Видеокарта для видеомонтажа
Также два вида аппаратного ускорения могут быть доступны если у нас есть интегрированная видеокарта (Intel) и дискретная (nVidia).
И дальше пользователь сам выбирает какой тип ускорения ему использовать в настройках проекта:
*В новой версии программы Adobe Premiere Pro CC 2017 добавлено GPU ускорение у двух эффектов: Offset / Смещение и Lens Distortion.
— Изменился набор видео переходов которые поддерживают GPU ускорение: Wipe / Вытеснение, Slide / Скольжение, Cross Dissolve / Перекрестный наплыв (видеопереход по-умолчанию), Dip to Black / Погружение в черный, Dip to White / Погружение в белый, Additive Dissolve / Аддитивный наплыв, Film Dissolve / Растворение пленки, Push / Выталкивание, Morph Cut / Монтаж морфа.
*Аппаратно ускоряемые эффекты Garbage Matte (4, 8, 16) теперь заменены на GPU ускоряемые маски которые доступны в окне Элементы управления эффектами / Effect Controls под каждым эффектом, с поддержкой GPU ускоряемого трекинга:
— Видеокарты построенные на GPU Fiji и Carrizo (APU c GCN1.2) с UVD 6.0 поддерживают аппаратное декодирование 8-битного 4K HEVC видео.
— При использовании бесплатного плагина NVENC-plugin v1.х.х в Adobe Premiere Pro CC 2015 доступны для аппаратного кодирования два формата: H.264 и H.265 (HEVC). А возможность кодирования в формат H.265 (HEVC) доступна только для чипсетов: GM200 / GM204 / GM206 (Maxwell 2.0).
NVENC существует два типа, версию 1.0 поддерживают все чипсеты Kepler (видеокарты серии GTX/GT 6хх и 7хх серий). Версию NVENC 2.0 поддерживают все чипсеты Maxwell, но есть отличия, Maxwell 1.0 (это видеокарты nVidia GeForce GTX 750 и nVidia GeForce GTX 750 Ti) не поддерживают кодирование в формат H.265 (HEVC). А видеокарты построенные на чипсете Maxwell 2.0 поддерживают, это десктопные чипсеты: GTX 950, GTX 960, GTX 970, GTX 980, GTX Titan X и ноутбучные чипсеты: GTX 965M, GTX 970M, GTX 980M.
Реальная разница в производительности между NVENC 1.0 и NVENC 2.0 при использовании плагина NVENC_export Version v1.07 в программе видеомонтажа Adobe Premiere Pro. Использовались видеокарты: nVidia GeForce GTX 650 (GK107-450-A2 / Kepler) и nVidia GeForce GTX750 (GM107-300-A2 / Maxwell).
NVENC кодирование также поддерживается на мобильных чипсетах Kepler и Maxwell, так как кодированием занимается отдельный аппаратный кодек, то при экспорте видео с ноутбука, GPU эффекты будут просчитывать шейдеры CUDA, а потом кодированием займется NVENC кодек. На скрине GPU-Z будет загрузка в строках: GPU Load (CUDA) и Video Engine Load (NVENC).
Но при обычной работе в программе Adobe Premiere Pro CC 2015.1 с GPU эффектами, операциями и тяжелыми форматами: CinemaDNG (Blackmagic Cinema Camera), Apple ProRes 422 (HQ), RED R3D Raw File (RED MYSTERIUM-X S35), Canon DSLR, разницу между одноклассниками разных поколений (например: NVIDIA GeForce GTX 970 и NVIDIA GeForce GTX 770) заметить трудно. Это больше всего разочаровывает пользователей, так как купив новую видеокарту, они ожидают приличной прибавки в скорости рендеринга. Поэтому расставаться со своими деньгами надо только тогда когда твердо уверены, что видеокарта уже не справляется, нодо покупать более мощную. Или если надо для работы с тяжелыми GPU плагинами.
— Пропускная способность памяти. Если покупать бюджетное дискретное решение, то самое дно это GDDR5 и 128-битная шина памяти, эти показатели намного важнее, чем количество потоковых процессоров и т.д. Для программы Adobe Premiere Pro CC 2015 очень важен параметр пропускной способности памяти видеокарты.
Часто задают вопрос, а вот у той видеокарты больше разрядность шины (они могут быть: 64-бит, 128-бит, 192-бит, 256-бит, 384-бит и 512-бит для GDDR5). Сравнивать разрядность шины надо только для одного поколения, например у видеокарты GeForce GTX 960 со 128-битной шины памяти, эффективная ПСП (за счет используемой технологии сжатия) равна GeForce GTX 660 со 192-битной шиной памяти.
— При работе со сторонними плагинами, особенно OpenGL, может возникнуть проблема низкой загрузки GPU видеокарты. Ярким примером является ситуация с плагином Red Giant Magic Bullet Looks. На конкретном примере рассмотрим как меняется производительность плагина на старой видеокарте Gigabyte GV-R785WF2-2GD построенной на чипсете AMD Radeon HD 7850 / Radeon R7 265 / Pitcairn Pro (как правило некоторые пользователи не смотрят на загрузку видеокарты при работе, и когда время рендеринга становится неприемлемым, покупают новую более мощную видеокарту, но время рендеринга может не сильно уменьшиться). У видеокарт на чипсетах AMD все это усугубляется тем что, драйвера могут резать производительность видеокарты при работе в OpenGL. Применяем эффект Magic Bullet Looks, выводим видео в формат H.264, в настройках экспорта сняты галки: Render at Maximum Depth (Рендеринг при максимальной глубине), Use Maximum Render Quality (Наилучшее качество визуализации), Use Frame Blending (Использовать наложение кадров), Use Previews (Предварительный просмотр).
Видеокарта GeForce GTX 1080 не распознавалсь в режиме CUDA и поэтому работала в режиме OpenCL, в котором видеокарты nVidia особенно не блещут.
Также нет поддержки новой архитектуры nVidia Pascal в плагине: Neat Video 4.1, в движке Ray-traced 3D Renderer в программе Adobe After Effects CC 2016 и т.д. Также есть проблемы у видеокарт GTX 10×0 при работе с R3D видео на данный момент (драйвер GeForce 368.22 WHQL).
Компания AMD пошла другим путем и первыми выпустила видеокарты среднего ценового диапазона: AMD Radeon RX 480 и AMD Radeon RX 470 построенные на архитектуре Polaris и 14нм чипсете Polaris 10 (Ellesmere), а также бюджетную модель: AMD Radeon RX 460 построенную на 14нм чипсете Polaris 11 (Baffin).
Ключевые особенности AMD Polaris:
— Это четвертое поколение архитектуры Graphics CoreNext.
— Аппаратное кодирование и декодирование H.265 (HEVC) видео.
— Поддержка видеовыхода HDMI 2.0a.
— Обновлен Video Coding Engine до версии 3.4.
— Обновлен Unified Video Decoder до версии 6.3.
— Обновлен System Direct Memory Access до версии 3.1.
— Обновлен Display Controller Engine до версии 11.2.
— Обновлен System Management Controller до версии 7.2.
— Обновлен Interrupt Handler до версии 3.1.
*Новая интегрированная графика Iris Pro Graphics P580 и 580, доступна в следующих десктопных процессорах: Xeon E3-1500 v5 (E3-1585 v5, E3-1585L v5, E3-1578L v5, E3-1565L v5, E3-1558L v5) и Intel Core i5-6585R, Intel Core i5-6685R, Intel Core i7-6785R.
Графическая подсистема Iris Pro 580 (GT4e) содержит 72 исполнительных блока (EU) с производительностью: 1Тфлопс (FP32), и оснащаются 128 МБ памяти типа eDRAM. Так как они имеют конструктивное исполнение BGA 1440, то будут доступны только в готовых решениях: неттопах, моноблоках, баребонах и ноутбуках.

















































































