|
Уверен, что прежде ты уже не раз видел в нашем журнале набор заглавных символов NVIDIA CUDA. Продукты калифорнийской компании весьма популярны и востребованы в наши дни. С недавних пор повышенный интерес к ним испытывают не только любители компьютерных игр, но и пользователи, заинтересованные в увеличении производительности вычислительных задач иного рода, которые напрямую не связаны с обсчетом 3D-сцен, зато сильно выигрывают от использования параллельных вычислений. Суть CUDA в том, что она позволяет использовать возможности GPU для вычислений широкого назначения. А нужно ли? На сегодняшний день большинство сложных, трудоемких задач выполняет центральный процессор. Бесконечное противоборство Intel и AMD лишний раз подстегивает китайские заводы выпускать более мощные товары. Мир увидел архитектуры Nehalem и Barcelona, и с большой долей уверенности можно сказать, что покуда кремний не иссякнет, их дела будут идти в гору. Но GPU обладает неоспоримыми плюсами, присущими исключительно особенностям их архитектуры, а также некоторым «RISC-камням». Итак, CPU предназначен для решения последовательных задач, а GPU актуален при работе с параллельными вычислениями. При решении подобных задач он показывает чудеса производительности. Например, при работе с графикой происходит одновременная обработка полигонов и пикселей. Роль КЭШа у графического процессора играет специальная выделенная память, плюс никто не мешает производителям разместить в чипе несколько килобайт памяти (больше и не надо, так как данные здесь долго не задерживаются в отличие от SRAM CPU). Для графики – все идеально! Основная загвоздка в том, как «заставить» GPU решать несвойственные ему задачи. Для широкой общественности первопроходцами параллельных вычислений стали студенты из Стэндфордского университета, разработав в 2003 году нашей эры технологию GPGPU (General Purpose Computation on GPU – универсальные расчеты средствами видеокарты) и проект Brook GPU. Ребятам предстояло решить непростую задачу: аппаратно и программно принудить графический адаптер производить трудоемкие вычисления. И у них, что неудивительно, получилось. Используя универсальный язык C, лучшие умы Америки заставили работать GPU как процессор, с поправкой на параллельную обработку данных. После Brook появился целый ряд производных проектов по подобным расчетам: библиотеки Brahma и Accelerator, а также профессиональная система метапрограммирования GPU++. Софтовые наработки Стэндфордских программистов заинтересовали NVIDIA, и сегодня вычисления (открытые для публики) за счет графического агрегата осуществляются силами архитектуры CUDA (Compute Unified Device Architecture) – уже довольно популярной среды распараллеливания вычислений у различных разработчиков ПО во всем мире. Постоянный читатель журнала наверняка знает, что главным патроном в обойме «Зеленых» на сегодняшний день является двухчиповый GeForce GTX295 (2 x G200). Данный текстолитовый механизм из сегмента игрового «железа» обладает сразу двадцатью (по десять на каждое ядро) кластерами текстурных процессоров (Texture Processor Cluster) – основными составляющими шейдерного ядра видеокарты. Программное обеспечение видеокарт NVIDIA приспособлено для GPGPU, начиная с 8-го семейства. Технологию CUDA поддерживают любые видеоадаптеры GeForce 8xxx и выше (в том числе и ноутбучные). Только вот по мере уменьшения мощностей GPU меньше становится и TPC. Разница легко чувствуется: у популярного, звездного чипа G92 их всего восемь (узнать все необходимые характеристики позволит крохотная утилита CUDA-Z – http://cuda-z.sourceforge.net). На этом разбиение «внутренностей» GeForce’а не заканчивается. Каждый TPC раздваивается (или растраивается в зависимости от архитектуры) на потоковые мультипроцессоры (Streaming Multiprocessor, SM). Такой «стрим» состоит из восьми потоковых процессоров (SP). Блоки SM декодирует инструкции и производят конечный вывод данных после обработки потоковыми процессорами. За один цикл они выбирают варп (минимальную единицу информации) и обрабатывают его. Каждый мультипроцессор обладает так называемой общей памятью (Shared Memory). Ее размер составляет 16 килобайт и предоставляет своеобразный КЭШ графического чипа, который обеспечивает связь потоков в одном блоке и не предназначен для работы с пиксельными шейдерами. Мультипроцессор имеет несколько тысяч регистров с числом активных блоков, не превышающим восьми. Например, G92 одновременно может держать до 12288 скалярных потоков в обработке. Баланс потока очень важен для эффективной обработки, поэтому NVIDIA рекомендует использовать блоки с размерами кратными 64. Учитывая рассмотренные тонкости строения GPU видеокарты, можно создать весьма производительное средство для параллельных вычислений. Технология CUDA «по умолчанию» включена в драйверах NVIDIA – CUDA Driver входит в состав драйверов для видеокарт. Тесты показали, что лучше использовать драйвера, начиная с версии ForceWare 181.22 – в более ранних версиях CUDA могла не включаться в некоторых приложениях. Также часто необходимо активировать CUDA в самих приложениях. Например, в программе кодирования видео TMPGEnc нужно выставить соответствующие галки в настройках. Проверить работоспособность CUDA можно при помощи уже названной выше утилиты CUDA-Z, а также косвенно по мониторингу температуры GPU в RivaTuner – во время расчетов, использующих CUDA, она всегда больше, чем в простое. Мы подобрали для тебя набор самых интересных программ, которые могут открыть для тебя прелести технологии CUDA и помочь использовать твою видеокарту для гораздо более широкого спектра задач. Специально была взята далеко не самая крутая система, чтобы продемонстрировать, что CUDA доступна практически всем пользователям видеокарт NVIDIA: * Материнская плата – ASUS M3N-HT Deluxe; NVIDIA SDK Browser * Файл установки, Мбайт – 52.4 Для новичков и любопытствующих индивидов первым делом советую заглянуть в специальный CUDA-браузер, скачанный вместе с SDK10 и драйвером для версии технологии 2.20. Приложение содержит ряд показательных минипрограммок, а также большой набор документации, описаний и примеров программного кода (все на английском). Любой желающий может ощутить силу параллельных вычислений на своей шкуре: 61 тест разработан как научными деятелями (учеными, инженерами), так и коммерческими разработчиками (их софт рассмотрен дальше). Тут же можно сравнить друг с другом скорости работы центрального процессора и видеокарты при обработке данных. Например, тест на вычисление префиксной суммы (вычислительный примитив scan) над массивами разной длины, используя блок с 256 потоками, видеокарта ASUS EN8800GT производит за 0.17 миллисекунды. Athlon X2 6000+ (Windsor) при дефолтных частотах тот же опыт проходит за 2.8 миллисекунды. Получается, что G92 в 16 раз быстрее «камня» AMD. Браузер поддерживает операционные системы Windows (не ниже версии XP), Linux и Mac OS X, следовательно, такие же требования присутствуют и у остальных приложений. Если хочешь самостоятельно, на примерах, поэкспериментировать с возможностями CUDA, то в качестве набора инструментов используй любой программный пакет, работающий с языком C. Человеку знающему будет легко освоиться в новой среде. От обычных программ код с использованием CUDA отличает появление еще одного исполнительного устройства, GPU, которому центральный процессор может давать задание выполнить расчет в многопоточном режиме. Программисту достаточно выделить память в GDDR видеокарты, дать задание на расчет для GPU, определив, во сколько потоков будут происходить вычисления, и скопировать готовый результат из графической памяти в оперативную. В частности, в нашем примере (смотри скриншот) видеокарте дается задание сложить две матрицы, заполненные случайными числами, запускается один миллион потоков, и результирующая матрица копируется из видеопамяти в RAM. Тут важно понимать, что вызов GPU производит центральный процессор из глобальной (_global_) функции. Для работы программы необходимо выделить память как в основной памяти (host), так и в графической (device). Сперва из основной памяти в графическую копируются исходные данные, затем, после расчета, из графической памяти в основную копируется результат. Ну и конечно, надо не забыть освободить выделенную память. Легко догадаться, что внеся не столь значительные изменения в программный код (в некоторых случаях достаточно переписать 1% кода), написанный только для CPU, можно получить существенное ускорение расчетов. Практические аспекты программирования описаны в подробной документации, идущей в комплекте вместе с драйвером и двумя приложениями, а также на сайте NVIDIA. * Файл установки, Мбайт – 1.04 Для тех же, кто не хочет (и не будет) заморачиваться программированием самостоятельно, предлагаю обратить внимание на первую утилиту, использующую всю мощь твоего GPU. Это платная программа для конвертирования видео в формат H.264 – CoreAVC. Сотрудники CoreCodec утверждают, что их кодер является одним из самых производительных в среде высокого разрешения (HD DVD, Blu-Ray). Дело в том, что рассматриваемая утилита использует сравнительно новый стандарт H.264 (MPEG4 Advanced Video Codec) и определенный подход к преобразованию видео. Первый пункт представляет собою доработанный вид компрессии кодеков MPEG2 и H.263 с использованием ранее сжатых кадров в качестве основных, независимости порядка и методов воспроизведения картинки, компенсации движения с переменными размерами блоков (от 4х4 до 16х16 пикселей). Второй пункт подразумевает программный подход к декодированию файлов, а не аппаратный. Остается потратить минимум джоулей: включить HD-кино и поудобнее расположиться за экраном :). Дальше «пыхтеть» будет CoreAVC. Пока ты просматриваешь любимое творение кинематографа, центральный процессор «отдыхает», сложив полномочия в пользу GPU. В углу проигрывателя в это время будет красоваться зеленая иконка CUDA. Как результат, тяжеловесное кино обрабатывается в два счета, и его можно смотреть на машине даже с очень слабым CPU. Если же иконка – голубая, то по каким-либо причинам декодирование не происходит. * Файл установки, Мбайт – 8.03 Есть у меня парочка художественных произведений формата AVI, которые, несмотря на годы и вечные переселения из кластеров одного винчестера в другие, остаются и будут востребованными еще ой как долго. Сторонний человек посчитает меня сумасшедшим, узнав, что лицезрение говорящих «квадратиков» приносит автору этих строк большое удовлетворение. К счастью, компания MotionDSP совместно с NVIDIA выпустила утилиту, способную улучшить качество изображения ролика практически любого формата. Ну как тут не воспользоваться представившейся возможностью! Ан нет, триал версия vReveal работает всего 30 суток, причем последние два дня начинает жутко надоедать. Если хочется большего, то придется заплатить 49.99 мертвых президентов. Собственно говоря, работа с утилитой и начинается с закрытия рекламных вкладок. После чего тебе предлагают создать галерею (меню Gallery) с видеоконтентом, сформированную в зависимости от форматов роликов, что весьма удобно при их большом количестве. Остается лишь выбрать требующий модификации файл. Для чего переходим на вкладку Enhance. Основными параметрами улучшения картинки являются очистка ролика от всевозможных мелких частиц, уменьшение пикселей (в два раза), уничтожение расплывчатости, настройка контрастности, света и стабильности изображения. Неплохой джентльменский набор получается. В меню Fine Tuning пользователю дают возможность поэкспериментировать с ранее описанными «твиками» более детально. Справа же ролик демонстративно преобразовывается прямо на наших глазах. Остается воспользоваться закладкой Share и сохранить файл на жестком диске компьютера, либо сразу же выложить его на ресурс YouTube (функция, видимо, создана для самых нетерпеливых пользователей «Глобальной паутины»). Утилитой, аналогичной vReveal, является еще один CUDA-продукт Ikena, разработки которого на момент написания статьи практически закончены. В скором времени мы увидим очередного обработчика видео и фото. * Файл установки, Мбайт – 8.54 Теперь, когда смартфон имеется чуть ли не у каждого второго пользователя, очень здорово, что есть компания Elemental Technologies со своей «взрывной» программкой Badaboom, использующей архитектуру CUDA. Правда, по сложившейся традиции софтина работает задарма всего месяц, по истечении которого вежливо попросит с нас одну тысячу рублей (29.99$). Ну, ничего, за 30 дней можно ух как наконвертироваться :). Помимо описанного в предыдущих программах WMV, Badaboom отлично ладит с форматами MPEG2, H.264 (MP4), RAW*, HDV, AVCHD, MPEG1, VC1, DivX, Xvid и FRAPS с разрешением картинки до 1920 x 1080 точек. Надо сказать, достаточно широкий спектр услуг и предложений. А если сюда внести поддержку аудио с расширениями AC-3, MP2, PCM и AAC, выходит вообще просто замечательная картина. Можно выбрать гаджет, для которого произойдет форматирование ролика, а можно выставить настройки вручную. Ваш покорный слуга не является счастливым обладателем «надкусанных» i-телефонов (или вообще Blackberry), поэтому в меню SETTINGS (в закладке picture settings) сразу выставил параметры разрешения видеоролика для своего чудо-девайса. Там же настраивается качество непосредственно картинки и ее звукового сопровождения. Полученный проект сохраняется в формате H.264 (MP4). Но такие настройки имеются в любом худо-бедно работающем конверторе. А вот получить 100 средних FPS в придачу к разгруженному CPU может только софт, заточенный под технологию CUDA. К примеру, эталонный файл при определенных параметрах разрешения и качества «преобразовался» всего за 23 секунды. Тот же тестируемый ролик средствами встроенного плеера Windows конвертируется порядка двух минут. * Файл установки, Мбайт – 279 Начать знакомство с очередным CUDA-приложением стоит с просмотра небольшого видеоролика компании CyberLink, который, на самом деле является тестовым роликом для софтины. Его всегда можно использовать при тестировании потенциала параллельных вычислений. А можно взять другой, благо поддерживаемых форматов у программы PowerDirector ничуть не меньше, чем у рассмотренной выше Badaboom. Утилита служит верой и правдой любителям создавать дома свои видеоопусы (новичкам предоставлен небольшой мануал по работе с «Директором»). Причем использование GPGPU в творениях будущих монтажеров приводит к значительному увеличению производительности до нескольких раз (в сравнении с CPU) в зависимости от формата и используемых эффектов. Мне, как уже давно покрывшемуся коррозией железячнику, не очень интересна начинка утилиты. Любознательный пользователь разберется в ней сам. К тому же у профессионалов в области видеомонтажа наверняка найдется много дополнительных вопросов. Посмотрим лучше на поразительную производительность тестируемого софта. Прилагаемый к скачанному архиву ролик кодировался видеокартой в формат H.264 (MP4) ровно 10 секунд. Этот же файл с этими же настройками средствами двух «голов» K10 преобразовался уже за 31 секунду. Получается, что в данном случае GeForce 8800GT в три раза быстрее центрального двуядерного процессора. Badaboom конвертирует архивный файл (с теми же опциями) всего за 6 секунд, что на 40 процентов быстрее. Но у программы от Elemental Technologies немного другие приоритеты. * Файл установки, Мбайт – 72.3 Добрались-таки еще до одного CUDA-конвертера. Ого, а обойдется сие «удовольствие» в эпоху кризиса в 100 енотиков. Хорошо, что триал версия TMPGEnc рассчитана на две недели спокойного юзанья. Итак, разобравшись с финансовыми вопросами, переходим к утилите. Советую сразу же зайти в опции (одноименная вкладка) и включить поддержку CUDA (по умолчанию программа черпает ресурсы CPU). В первом меню Start пользователю любезно предложат создать новый проект. Добавляем видеоролики (подобно PowerDirector’у прилагается собственный MPEG2-файл), музыку, фотографии и выдвигаемся к следующему меню Format. Здесь, как и у «Мощного режиссера», производятся манипуляции с видеоданными (режь, удаляй, вставляй, заменяй). Вот, собственно говоря, и все: в следующих окошках идет непосредственная настройка будущего процесса конвертирования. Так TMPGEnc «расправился» с тестовым файлом за 16 секунд. Athlon 6000+ при тех же настройках отстает от детища Pegasys Inc. всего на 4 секунды. Прошу заметить, что в официальной документации софтины GeForce GTX 280 обогнал Intel Core 2 Quad 6700 на 930 процентов! Стоимость программы и ее производительность навеивают грусть. Даже дополнительные возможности по редактированию файлов не скрасят общего недовольства. Быть может, виной всему злополучный триал. В любом случае, пример других приложений показал, что стремиться есть CUDA :). * Файл установки, Мбайт – 78 Последняя программа, Arcsoft TotalMedia Theatre 3, ценою в $80, представляет собой плеер, или, как выражаются разработчики, медиатеатр. Arcsoft TotalMedia Theatre 3 распознает форматы высокого разрешения (720p – 1080p) MPEG-2, AVC, AVCHDs, CDs, VCDs, VC1, Quicktime HD, DivX HD и популярный H.264 с приставкой HD. Вот и весь букет. Остальные функциональные особенности плеера не сильно отличаются от CPU-конкурентов. Разве что утилита обладает возможностью программирования пульта дистанционного управления (клавиша Show/Hide sub control panel), что очень удобно. Ну да не эта функция является главным ноу-хау плеера. Поддержка CUDA – вот основной козырь ArcSoft. Особенно при просмотре Blu-Ray дисков и прочего HD-контента. Действительно, с использованием «Медиатеатра» нагрузка на центральный процессор заметно падает. Для тестового стенда прокрутка ролика формата 1080p позволила CPU напрягать всего 30 % своего потенциала. К тому же встроенный плагин SimHD улучшает качество выдаваемой картинки. По заверениям производителей утилиты, он способен увеличить разрешения файлов, изначально закодированных в 720x480, вплоть до 1920x1080 точек без особых потерь производительности! Верится с трудом, но польза от Arcsoft TotalMedia Theatre 3 точно есть. Еще несколько интересных программ с поддержкой CUDA: * Nero Move it Небольшой вывод Технология параллельных вычислений CUDA уже находит реальное применение для повседневных задач пользователей. Кодирование, транскодирование и редактирование пользовательского видео (и в целом обработку цифрового контента) уже гораздо эффективнее делать с использованием GPU. Удобный SDK и развитие CUDA-коммьюнити открывают простор для учебных и энтузиастских проектов. Для научных целей CUDA применяется уже достаточно широко. Так что пора приобщаться к вычислениям на графических адаптерах, а то как бы потом не пришлось догонять и переквалифицироваться :). Первого октября 2000 года ученые Стэндфордского университета запустили уникальнейший проект распределенных вычислений под названием folding@home (F@H). И это не обычное «железо», объединенное под крышей одного вычислительного центра – это вычислительное коммьюнити, прочно связанное средствами Интернета и специального программного обеспечения! Миллионы ПК и их владельцы в добровольном порядке участвуют в компьютерном моделировании сложных процессов свертывания и развертывания молекул белка. Утилита при этом работает в фоновом режиме и затрачивает максимум 5% от ресурсов процессора, но за счет немыслимого количества участников суммарная производительность F@H уже к сегодняшнему дню составляет порядка 5500 Тфлопс. При чем же здесь CUDA? А при том, что не так давно NVIDIA и ATI поддержали идею F@H, предложив расщеплять атомы белков с использованием параллельных вычислений на GPU, и выпустили для этого специальные библиотеки для клиента. Если канадцы практически сразу отстранились от дел научных, то NVIDIA, реализующая каждую неделю больше миллиона графических процессоров, продолжает содействовать стэндфордцам. |
| HTML | |
| BB-Code | |
| Ссылка |
| Случайные новости: |
| Свежие файлы: | ||||||||||||
|
|
Комментарии к материалу
| |