Как ускорить рендеринг на ноутбуке? Имеем на руках игровой ноутбук MSI GE70 0ND-082XRU с двухъядерным процессором и дискретной графикой Nvidia GeForce GTX 660M (Kepler) среднего уровня.
Понятно, что за счет центрального процессора ускорить рендеринг не получится, остаются две технологии Intel Quick Sync Video и CUDA / NVENC.
NVIDIA GPU поддерживающие NVENC кодирование это Kepler и Maxwell. У них есть отличия (подробнее читаем в этом тестировании) по скорости работы и функционалу. NVENC 2.0 поддерживают только чипсеты Maxwell и Maxwell 2.0. В свою очередь Maxwell 2.0 (чипсет GM2xx) поддерживают кроме кодирования в формат H.264, также кодирование и в формат HEVC (H.265). И поддерживает разрешение до 4K@60fps с потоком до 130 Мбит/с (для Kepler: 1080p@60FPS с потоком до 50 Мбит/с).
Ограничения NVENC: для нелицензированных приложений ограничена поддержка двух одновременных потоковых сеансов в NVENC на одном GPU на мобильных и десктопных видеокартах GeForce.
Среди специальных видеокарт, официально заявлена поддержка работы NVENC с более чем двумя потоками видео (количество потоков ограничивается только мощностью видеокарты/чипсета) для следующих моделей: NVIDIA Quadro K4000 и выше, NVIDIA Quadro K2000M и выше, NVIDIA Tesla K10 и выше, и вся линейка NVIDIA GRID.
Итак, для начала тестирования подключаем ноутбук к розетке, потом идем в Пуск > Панель управления > Оборудование и звук > Электропитание > Выбор плана электропитания и ставим галку перед пунктом: Высокая производительность. Перезагружаем компьютер, это необходимо, чтобы частоты работы дискретной и интегрированной видеокарты не снижались до 2D.
Технические характеристики интегрированной видеокарты в двухъядерном процессоре Intel Core i5-3210M - Intel HD Graphics 4000 (базовая частота графической системы: 650 МГц, а максимальная динамическая частота графической системы: 1.1 ГГц, это максимальная частота рендеринга (МГц), поддерживаемая HD-графикой Intel с функцией Dynamic Frequency).
Создаем новый проект в программе Adobe Premiere Pro CC 2015, Рендеринг и воспроизведение видео > Средство рендеринга: Только программное ускорение ядра Mercury Playback.
Технология Intel Quick Sync Video обеспечивает быструю конвертацию видео для портативных медиапроигрывателей, размещения в сети, а также редактирования и создания видео. С нее для контраста и начнем, подробнее как подключить плагин с поддержкой Intel Quick Sync Video, читаем здесь. Выбираем: CBR и битрейт 15 Мбит/с. Нажимаем на кнопку: Экспорт.
Загрузка четырех потоков процессора доходила до 90% и 4.39Гб оперативной памяти (из 8Гб предустановленной).
Загрузка Intel HD Graphics 4000 на базовой частоте 650 МГц доходила до 55%. Частоты прыгали от 350 до 750МГц.
Итоговое время просчета видео на таймлайне, длительностью 6 минут и 6 секунд, составленных из различных FullHD H.264 файлов, с разной частотой кадров и разных форматов, составило: 4 минуты и 50 секунд.
Для работы с NVENC на ноутбуке, устанавливаем драйвера GeForce Game Ready Driver WHQL 347.88 из архива: Драйверы > Бета и архивные драйверы.
Нажимаем на кнопку: Загрузить сейчас.
Устанавливаем драйвера NVIDIA.
Смотрим технические характеристики мобильного чипсета Nvidia GeForce GTX 660M:
Выбираем средство рендеринга: Аппаратное GPU-ускорение ядра Mercury Playback (CUDA).
В настройках экспорта программы Adobe Premiere Pro CC 2015 выбираем, Формат: NVENC_export.
В разделе: Видео > Nvidia GPU selection видим основные характеристики видеокарты.
Нажимаем на кнопку: NVENC Info.
Закладка NVENC Config:
Информация о NV_ENC_H264_PROFILE: BASE (только CAVLC, нет B-frames), MAIN (интерлейс, CABAC, B-frames), HIGH (выбираем для BluRay, веб, ТВ и т.д.), STEREO (для стерео MVC), HIGH_444 (lossless 4:4:4).
Доступные для выбора профили NV_ENC_H264_PROFILE:
NV_ENC_H264_PROFILE_BASELINE_GUID > BASE (базовый профиль).
NV_ENC_H264_PROFILE_MAIN_GUID > MAIN (основной профиль).
NV_ENC_H264_PROFILE_HIGH_GUID > HIGH (высокий это главный профиль для выбора).
NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID > автоматический выбор профиля.
Пресеты NV_ENC_PRESET:
NV_ENC_PRESET_DEFAULT_GUID
NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID
NV_ENC_PRESET_HP_GUID > fast
NV_ENC_PRESET_HQ_GUID > medium
NV_ENC_PRESET_BD_GUID
NV_ENC_PRESET_LOW_LATENCY_HQ_GUID
NV_ENC_PRESET_LOW_LATENCY_HP_GUID
7ADD423D-D035-4F6F-AE ...
Информация о уровнях NV_ENC_LEVEL_H264: от 3.0 до 5.2 (5.2 доступен при выборе autoselect).
Пресеты NV_ENC_LEVEL_H264:
Информация о BitrateControl: CONSTQP (constant Quantization-P), VBR (переменный битрейт), CBR (постоянный битрейт), VBR_MINQP (VBR с Minimum Quantization-P), 2_PASS_QUALITY (low-latency, CBR, 2-pass, slow), 2_PASS_FRAMESIZE_CAP (low-latency, CBR, 2-pass), 2_PASS_VBR (высокое качество, два прохода VBR).
*Ранее у NVENC была опция под названием VBR2Pass, но она была переименована в VBRHQ в SDK 7.19.
Но в этом режиме данные из предыдущего кадра используются для определения следующего, для распределения битов кадра.
В X264 и x265 два проходят работу по-другому, где все кадры от начала до конца анализируется, и эти данные используются, чтобы сделать фактический процесс кодирования во втором проходе.
VBRHQHQ (двухпроходное кодирование) режим используется только для низкой задержки видео (например, видеоконференции).
Пресеты rateControl:
NV_ENC_PARAMS_RC_CONSTQP > CONSTQP (constant Quantization-P)
NV_ENC_PARAMS_RC_VBR > VBR
NV_ENC_PARAMS_RC_CBR > CBR
NV_ENC_PARAMS_RC_VBR_MINQP > VBR с Minimum Quantization-P (Переменный битрейт с минимально используемым значением квантизатора). Minimum Quantizer или MinQP (минимально возможное/используемое значение квантизатора) это параметр активно влияющий на качество кодирования.
В теории, чем ниже его значение, тем более чёткая картинка должна получаться (при условии, что битрейт будет достаточно высоким для достижения этого квантизера). На практике же, зачастую нет смысла использовать значения ниже "10". На слабо детализированных, размытых источниках можно смело ставить и "20". Лишь для мелко детализированного видео с хорошей проработкой элементов, значение "1" показало улучшенные (относительно "10") результаты.
Будьте осторожны, на малых битрейтах не стоит увлекаться значениями меньше "10", так как качество может получится не лучше а хуже (например в видеофайлах жатых по методу ABR(постоянный битрейт) – может появиться „блочность”; В CRF файлах(постоянное качество) – может увеличится размер выходного файла).
Как правило, при значении квантизера порядка 10–15, картинка получается хорошего качества. Поэтому рекомендованное значение "10".
При желании чуть сэкономить битрейт можно установить "20", при этот чуть–чуть, едва заметно ухудшится детализация.
При желании сильно сэкономить битрейт установите 29-30.
NV_ENC_PARAMS_RC_2_PASS_VBR > высокое качество, два прохода VBR (с переменным битрейтом).
В разделе Video codec group, нажимаем на кнопку Codec Settings.
Окно с расширенными настройками кодека:
Закладка Sample basic video param group:
Нажимаем на кнопку: Экспорт, для прямого рендеринга из программы Adobe Premiere Pro CC 2015. Загрузка NVENC кодера чипсета Nvidia GeForce GTX 660M составила 81% (Video Engine Load):
Загрузка центрального процессора: до 79% и утилизировано было до 4.67Гб оперативной памяти.
Итоговое время просчета: 3 минуты и 47 секунд. Теперь, посмотрим как NVENC кодер будет работать в паре с движком: Аппаратное GPU-ускорение ядра Mercury Playback (CUDA). Растягиваем над всем видео корректирующий слой и применяем к нему GPU эффект: Эффекты > Размытие и резкость > Быстрое размытие.
В Элементы управления эффектами, изменяем параметр: Размытость до 12.
И в настройках экспорта, нажимаем на кнопку: Экспорт, смотрим на показания утилиты GPU-Z и видим, что GPU Load загружено на 99%, но помимо этого работает и NVENC кодирование Video Engine Load: 54%.
Загрузка же центрального процессора: 29%, утилизировано 5.02 Гб оперативной памяти. Таким образом, у нас получилось самые сложные операции повесить на самый мощный модуль в ноутбуке, а именно дискретный графический адаптер Nvidia GeForce GTX 660M.
Другие настройки:
--bframes = данная опция не поддерживается NVENC HEVC.
-- output-buffer 128 = если вы используете SSD, то устанавливаем 128mb. Однако, если вы используете жесткий диск, то выставляем точный размер DRAM буфера: 32мб или 64Мб.
-- cabac = не нужно указать, HEVC задействует CABAC по умолчанию.
-- cu-max = ограничение для NVENC 32х32.
-- enable-ltr = не надо включать, так как есть только один активный референсный фрейм в DPB.
-- fullrange = не надо включать, иначе приводит к цветовой ошибке.
Читаем про тестирование скорости работы NVENC движка на архитектурах Maxwell 2.0 и Pascal, в программе видеомонтажа Adobe Premiere Pro CC 2017.1.