|
Компьютерный форум OSzone.net » Цифровые технологии » Видео и аудио: обработка и кодирование » Использование GPU при кодировании |
|
Использование GPU при кодировании
|
Новый участник Сообщения: 11 |
Профиль | Отправить PM | Цитировать Затестировал тут новую фишку от nVidia. Называется nVidia Power Pack. Суть её состоит в том, что nVidia использует свои процессоры графических карт для сторонних задач... например для обсчёта физики PhysX или кодирование видеопотока. В наборчик входят экспериментальные драйвера 178.24, несколько игрушек, технологических демок и утилита кодирования видео Badaboom. Имея в арсенале достаточно приличную видеокарту Zotac GeForce 8800GTS 512Mb, попробовал технологические демки... что можно сказать, впечатляет... В Software обработке физики сплошное слайдшоу, при включении процессоров видеокарты картинка без особых проблем переваривала физику 60тысяч частиц. Но демки это демки... Меня гораздо больше интересует функция кодирования видео. По описанию - функция кодирования полностью перекладывает все вычисления на видеокарту, оставляя процессор свободным. Запустил эту утилиту Badaboom... ужасно убогий интерфейс, входной формат только с Mpeg2 (DVD), есть и кнопка "открыть файл Mpeg4", но утилита отказалась жевать современные DVDRip'ы, поэтому взял за основу трёхминутный фрагмент Mpeg2 потока. При битрейте 2460kbps видеокарта кодировала поток со скоростью 40-45 кадров в секунду, при этом загрузка четырёх ядер процессора не превышала 10% (работает антивирус, торрент, файрвол). Результат мне показался довольно таки не высоким и я с помощью virtualDubMod'а запустил кодирование того же фрагмента в кодек xVid v1.2.1. Данный кодек умеет использовать всего два ядра процессора, результат получился даже ниже видеокарты - 35-40 кадров в секунду. Получается, что видеокарта кодирует быстрее, чем 2,4 Ггц двухъядерный процессор. Но когда я задействовал все четыре ядра кодеком DivX 6.8.5, то результат тут оказался в пользу процессора.... 60-65 кадров в секунду.
Отдельно хочу упомянуть выходной формат видеокарты... nVidia в утилите использует какой-то свой хитрый кодек в качестве выходного формата, настроек у которого чуть да маленько, только битрейт можно менять. Самое интересное, что о существовании данного кодека не знает даже утилита AVIcodec v1.2 build113 с последним codecs.xml... Ну и виртуалДаб не может использовать этот кодек, а жаль... Может быть альтернативщики уже скомпилировали свой кодек, использующий GPU видеокарты... |
|
Отправлено: 18:46, 30-01-2009 |
fascinating rhythm Сообщения: 6608
|
Профиль | Отправить PM | Цитировать Подобный кодек выпускала ATI, встраивая его в свой Catalyst control center. Он-де тоже использовал возможности GPU, и всё такое прочее. Заявлялось ускорение, начиная с видеокарт икс-тысячной серии и выше. Я никакого революционного прироста, имея Radeon X1300, не обнаружил. Как выяснилось потом, ATI просто доработала какой-то кодек, настроив его на плохое качество, из-за этого и получался выигрыш по скорости (на iXBT, кажется, было исследование). Видеокарта не использовалась вообще.
Я скептически отношусь к громким заявлениям со страниц глянцевых компьютерных журналов, хотя тема интересная и, возможно, перспективная. И если реальное ускорение действительно возможно, то для этого надо переписать весь код кодеков, который разрабатывался долгое время. Это первый момент не очень быстрого внедрения такого ускорения в кодеки. А второе — не очень-то большой процент владельцев компьютеров имеют дорогие видеокарты, поддерживающие эту технологию. Программисты обычно предпочитают максимальную совместимость. До сих пор процессорные инструкции типа SSE2 и SSE3, которые не так-то новы, не используются во многих программах, что уж говорить о технологии, которой и года нет. |
------- Отправлено: 21:56, 30-01-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Ну в данном случае эффект на лицо - загрузка одного ядра не превышала 10%. Остальные простаивали. При этом скорость кодирования была быстрее чем при 100% загрузке двух ядер процессора. Думаю nVidia не зря прикупила компанию-владельца PhysX. И только благодаря собственному SDK и собственным программистам nVidia создала такой кодек...
По поводу мощных и дорогих видеокарт... данную функцию поддерживают все джифорсы, начиная с 8ххх серии. Так что, по идее, должно работать и на 8500... Другой вопрос - как |
Отправлено: 22:17, 30-01-2009 | #3 |
Железных Дел Мастер Сообщения: 24690
|
Профиль | Сайт | Отправить PM | Цитировать То, что графические процессоры можно приспомобить под нужды населения - обсуждается уже достаточно давно. А вот то, когда это будет сделано более-менее толково - вопрос пока остается открытым.
|
------- Отправлено: 03:06, 01-02-2009 | #4 |
Старожил Сообщения: 171
|
Профиль | Отправить PM | Цитировать Цитата ShaddyR:
"Впрочем, работа с видео не сводится только к кодированию. Внимание акцентируется именно на сопутствующих основной обработке операциях: наложении фильтров и эффектов, монтаже и т. п. Так, первая серьезная заявка на участие GPU в этом процессе сделана в новой версии продукта Pegasys – TMPGEnc XPress 4.6. Этот программный пакет позволяет перекодировать исходный видеофайл как в подготовленный к записи образ диска VCD, DVD или Blu-ray, так и в отдельный файл с использованием большого числа кодеков и форматов. Новая версия отличается тем, что в ней реализована возможность исполнения некоторых ресурсоемких фильтров посредством CUDA (сама компрессия все же исполняется на CPU). Кроме того, декодирование файлов HD также можно перенести на графический процессор, что уменьшает суммарное время обработки при слабом CPU. Поддерживаются все видеокарты NVIDIA, начиная с GeForce 8800, необходимо лишь установить свежую версию драйверов и в настройках программы активировать CUDA. Мы решили проверить, насколько эффективна подобная реализация, благо лицензионная версия утилиты входит в комплект поставки тестируемых видеокарт GeForce GTX 260 и GTX 280 производства MSI. Сразу отметим, что для чистоты эксперимента имитировалась довольно тяжелая нагрузка – кодирование 5-минутного отрезка HD-видео формата 1920×1080i, 29,97 fps (битрейт 16 Мб/с). Ролик преобразовывался в формат 1280×720p MPEG-4/ AVC с помощью H.264-кодека Mainconcept с профилем High, алгоритмом энтропийного кодирования CABAC посредством двухпроходной компрессии со средним битрейтом 6 Мб/с. Для оценки эффективности CUDA были активированы три фильтра: преобразование развертки в прогрессивную, устранение шумов на видео с максимальным диапазоном и адаптивная подстройка резкости. Мы намеренно использовали HD-контент, так как при преобразовании в форматы для портативных устройств с сильным снижением разрешения фильтры в принципе не нужны – на маленьком экране огрехи не заметны, а на большом при сжатии в низкое разрешение они не спасут. Для сравнения с традиционной системой, использующей для вычислений центральный процессор, мы собрали тестовый стенд на базе разогнанного до 3,8 ГГц Intel Core i7. Обработка каждого кадра перед его сжатием занимает много процессорного времени, в итоге при выполнении всей задачи силами CPU одно ядро оказывается загруженным на 100%, а три других (или семь виртуальных, в случае Core i7 с активным Hyper-Threading) работают над непосредственным сжатием потока примерно с 30%-ной загрузкой. Разумеется, назвать это эффективным никак нельзя – скорость не поднимается выше 3–4 кадров в секунду, а весь процесс занимает почти два часа. Учитывая, что некоторые фильтры попросту не поддаются параллелизации, зачастую четырехъядерный CPU оказывается бесполезным, и можно обойтись двухъядерным: пока одно ядро обрабатывает кадр фильтром, второе успеет сжать предыдущую порцию. Выводы Результаты тестирования показывают, что разработчики ПО не зря обратили взоры на GP-GPU. Значительного ускорения процесса обработки и кодирования потока по сравнению с Intel Core i7 с частотой 3,8 ГГц мы не наблюдаем только с одним графическим процессором – это сверхбюджетная модель GeForce 9400 GT, стоимость которой составляет всего $70. Правда, как мы уже упоминали, прямого сравнения в данном случае нет, т.к. видеокарта просто забирает часть нагрузки у CPU, предоставляя тому возможность сжимать поток, как только появляются доступные обработанные данные. Таким образом, можно сказать, что ядро NVIDIA G96, оборудованное 16 потоковыми процессорами (всего одним кластером из двух мультипроцессоров), в рассмотренных задачах может сравниться с одним ядром Nehalem. Естественно, этого все равно мало: при сжатии видео CPU задействуется всего на 35%. Максимальная загрузка наблюдается при использовании GeForce GTX 280 и достигает 80% – следовательно, в случае топовых видеокарт хватило бы даже неразогнанного процессора. SLI из двух видеокарт не приносит дивидендов – TMPGEnc использует только одну. Также из графика видно, что для эффективной работы этого ПО достаточно GPU с 64 процессорами (SP) и 256-битовой шиной памяти: разница между GeForce 9600 GT с 64 SP и GeForce 9800 GT со 112 SP практически не заметна. Отрыв GPU NVIDIA GT200 от предыдущих поколений связан с архитектурными улучшениями: наличием кэша, увеличенным файлом регистра и поддержкой dual-issue. Разница между GeForce GTX 280 и GTX 260 коррелирует с различиями в тактовых частотах, а не с количеством процессоров в GPU. Общее впечатление от TMPGEnc XPress 4.6, первой серьезной утилиты для обработки видео, использующей NVIDIA CUDA, весьма положительное. Почти трехкратная разница в быстродействии между системой с CUDA и вариантом без нее – впечатляющее зрелище. Это свидетельствует о том, что не за горами время, когда любая видеокарта среднего класса сможет обеспечить достаточное ускорение для обработки и рендеринга видео в домашних условиях. Остается надеяться на то, что разработчики кодеков все же преодолеют трудности и реализуют качественные режимы сжатия посредством GPU, и мы получим возможность справляться за час с задачами, на которые ранее требовалось несколько часов." ----------------------------------------------------- полную версию статьи можно прочитать здесь: http://itc.ua/node/35027 |
||
------- Отправлено: 20:32, 01-02-2009 | #5 |
Железных Дел Мастер Сообщения: 24690
|
Профиль | Сайт | Отправить PM | Цитировать Цитата brt:
Цитата brt:
|
||
------- Отправлено: 15:53, 02-02-2009 | #6 |
Старожил Сообщения: 171
|
Профиль | Отправить PM | Цитировать ShaddyR, я имел ввиду, что уже в программе TMPGEnc XPress 4.6!, смогли реализовать GPU
в кодировании видео!Первая нормальная ласточка уже есть , программа которой можно реально пользоваться и получать хорошее качество кодирования + скорость ! |
------- Отправлено: 16:13, 02-02-2009 | #7 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать 2all
а не в курсе есть ли для ависинта плагин ресайза использующий CUDA? |
------- Отправлено: 16:54, 04-02-2009 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Имена файлов при двухпроходном кодировании. | HiDux | Видео и аудио: обработка и кодирование | 12 | 28-08-2009 00:09 | |
Использование четырёх ядер при кодировании | Maikl7 | Видео и аудио: обработка и кодирование | 32 | 24-07-2009 22:13 | |
Квадраты на градиенте при кодировании | Andrew Placid | Видео и аудио: обработка и кодирование | 3 | 27-11-2007 03:55 | |
Иcкажения яркости при кодировании в Mpeg2 | Force | Видео и аудио: обработка и кодирование | 0 | 11-05-2007 20:10 | |
Проблема при кодировании в WindowsXP | Antiquar | Видео и аудио: обработка и кодирование | 15 | 18-12-2004 08:57 |
|