Наверх
Это запись из блога автора Denis Haritonov
Мнение редакции сайта Keddr.com может не совпадать с мнением данной публикации.
Читать правила написания блогов
3 комментария 30/11/2017

Ускорение видео обработки на видеокартах

Ускорение видео обработки на видеокартах

Существуют несколько видов компьютеров (процессоров) делящихся по принципу выполнения команд над данными. Один поток данных, один поток команд (по этому принципу работает центральный процессор), много потоков данных, один поток команд (по этому принципу работают видеокарты), много потоков данных много, потоков команд (некоторые сетевые чипы), один поток данных, много потоков команд (несколько экспериментальных устройств в 70-ые годы, возможно, какие-то узкоспециалезированные).

Из этого мы должны понять, что видеокарта может выполнять один набор команд (в некоторых новых поколениях больше 1, но значительно меньше количества процессорных модулей в видеокарте) над большим набором данных одновременно (к примеру умножить 5 тысяч чисел на 10 за 1 операцию, в то время, как обычный процессор должен будет сделать 5000 операций).

Следующее, что надо понять: это то что большенство алгоритмов по обработке видео работают по принципу “Разделяй и властвуй”, то есть, наложение фильтра на кадр видео состоит из разделения кадра на области, обработки всех квадратов определённым набором команд и склейка обратно. Самый ресурсоёмкий процесс – это обработка этих самых областей.

Ну так вот, почему бы нам не взять и не отдать области на обработку видеокарте к примеру: 1 область на 1 вычислительный модуль видеокарты, а затем забрать результат?

Ну что, принцип мы поняли, но как нам это сделать на практике? В реальности производители видеокарт позволяют использовать вычислительные модули видеокарты (это не все модули, которые есть в видеокарте, особенно в игровых). А именно производители видеокарт выпускают свои наборы инструментов для фреймворков параллельного программирования OpenCL (Nvidia (Quadro, GTX), Intel Graphics, AMD Radeon) и Сuda (Nvidia Quadro, GTX).

Но программисты, которые работают над видеоредакторами, должны написать свои алгоритмы так, чтобы в местах, в которых выгодно распараллелить обработку тяжелых вычислений, программа использовала OpenCL (а точнее его реализацию от конкретных производителей, в целом перенести эту поддержку с Nvidia на Radeon не так сложно при использовании OpenCL).

Теперь ближе к потребителю. Если программа, в которой вы работаете поддерживает параллельные вычисления на видеокарте, то, купив видеокарту с большим количеством вычислительных модулей, вы можете получить неплохое снижение времени рендера. Прирост будет зависеть от количества ядер (для заметного буста рекомендуются карты с 700+ вычислительных модулей) и объёма видеопамяти (при малом объёме, данные для обработки будут гоняться туда сюда слишком часто, рекомендуются от 1 гигабайта).

Важно понимать, что сверхдорогие видеокарты при этом не обязательны, так как и на средних видеокартах время вычислений, которые будут производиться параллельно, уже будут соизмеримы с вычислениями CPU (склейка и загрузка видеокарты), которые ускорить нельзя. Так, к примеру, GTX 750 TI может дать выигрыш в 4 раза, а Titan в 4.8 (https://www.studio1productions.com/Articles/Premiere-Benchmark.htm). Лучше купите процессор помощнее, ибо не все алгоритмы хорошо параллелятся и программисты особо напрягаться не любят, а от процессора точно будет буст.

П.С. Я стал инженером, потомучто не люблю грамматику.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

3 комментария

сначала новые
по рейтингу сначала новые по хронологии
1
Джигурдей

не понял статью, как будто выдержка из чьего то реферата

Автор2
Denis Haritonov

Извиняюсь наверно стоило или полностью расписать или полностью уйти на абстракции

3
Андрей Москалец

Отличное чтиво. Спасибо :)

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

Modal box

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: