Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1000 / CUDA - перевод

.docx
Скачиваний:
31
Добавлен:
15.06.2014
Размер:
17.15 Кб
Скачать

Введение

Нам нравятся яркие и красивые демонстрации. Но, в конце концов, все мы являемся пользователями ПК. Все мы используем компьютер для выполнения каких-либо полезных задач. Причём у большинства пользователей работают довольно скромные конфигурации с недорогими комплектующими, а на апгрейды по $500 просто жалко денег. Нам нужны технологии, которые позволят выполнять работу более эффективно, будь то монтаж видео, моделирование генетического кода или игры.

Решения GPGPU от nVidia.

Некоторые приложения линейные по своей природе, им нужно просто как можно более быстрое выполнение одного потока. Другие приложения могут использовать параллелизм. Совершенно разный код, от Unreal Engine 3 до Adobe Premiere, смог продемонстрировать преимущества на многопоточных CPU, но что если 4, 8 или даже 16 потоков - это только начало?

Именно такая идея кроется за вычислительной архитектурой nVidia CUDA, которая, судя по определению компании, может работать одновременно с тысячами потоков.

Мы уже писали о технологии CUDA в прошлом, поэтому, будем надеяться, базовые представления о ней у вас имеются (если нет, то рекомендуем сначала ознакомиться со статьёй "nVidia CUDA: вычисления на видеокарте или смерть CPU?"). Хорошо это или плохо, но большинство обзоров CUDA в прессе фокусируется на high-end "железе", хотя соответствующая аппаратная поддержка присутствует в GPU nVidia ещё со времён GeForce 8. Если принять во внимание крупные корпоративные бюджеты, выделенные для высокопроизводительных вычислений (high-performance computing, HPC) и профессиональных графических станций (куда, соответственно, позиционируются решения nVidia Tesla и Quadro), неудивительно, что отдел маркетинга nVidia работает в данном направлении в полную силу.

Но в 2009 году грядут перемены. Технология CUDA станет массовой. Сегодня уже присутствует довольно крупная база совместимых настольных видеокарт, и массовые приложения, которые уже содержат встроенную поддержку CUDA, появляются одно за другим.

Начало "с нуля"

Первым пользовательским приложением с поддержкой CUDA стало Folding@Home - вычислительный проект Стэндфордского университета, в котором каждый пользователь мог внести свою лепту и принять участие в вычислении взаимодействия протеиновых цепочек, чтобы лучше понимать (будем надеяться, и лечить) некоторые тяжёлые заболевания человека. Приложение стало поддерживать CUDA во второй половине 2008 года. Очень скоро после этого появился Badaboom, перекодировщик видео от Elemental Technologies, который, по информации Elemental, мог перекодировать до 18 раз быстрее, чем решение только на CPU.

Затем на рынок вышло большое количество мультимедийных приложений CUDA: Adobe Creative Suite 4, TMPGEnc 4.0 XPress, CyberLink PowerDirector 7, MotionDSP vReveal, Loilo LoiLoScope, Nero Move it и другие. Mirror's Edge, по всей видимости, стала первой игрой уровня AAA с полной поддержкой технологии PhysX на основе CUDA, которая позволяет увеличить визуальную сложность, будто бы, от 10x до 20x. Можно ожидать появления всё большего количества приложений - намного большего количества. AMD со своей технологией ATI Stream сегодня увязла в трясине неудач, а nVidia заявляет о полностью законченной технологии, предлагая CUDA всем, кто готов прислушаться... и разработчики, похоже, приняли технологию nVidia близко к сердцу.

Всё это, конечно, хорошо, но доказательство столь привлекательных возможностей CUDA пока приводилось только на high-end GPU. А как же насчёт обычных пользователей с ограниченным бюджетом? Конечно, неплохо было бы поставить в систему 3-way графическую конфигурацию, но большинство пользователей тратит на графику сто-двести долларов. Поэтому нам было интересно, сможет ли технология CUDA быть полезной для тех, кто не обладает high-end графической подсистемой.

Давайте посмотрим. В нашей статье мы изучим некоторые наиболее привлекательные приложения, а также измерим производительность на двух GPU среднего уровня.

Ретро-платформа для тестов

В отличие от большинства тестовых платформ, которые мы используем, мы намеренно решили избежать самых передовых и производительных компонентов. Мы сдули пыли со старых комплектующих возрастом два-три года: материнская плата Intel DG965WH, процессор Core 2 Duo E6700 (65 нм) со штатным кулером, две 512-Мбайт планки памяти Kingston DDR2-533 ValueRAM и 250-Гбайт жёсткий диск Maxtor MaXLine III. Мы установили на эту конфигурацию Windows Vista SP1.

Опять же, мы хотели приблизиться к массовой конфигурации, которая сегодня работает у большинства пользователей. Как правило, пользователи желают выжать максимум из своего компьютера. А переход на Core i7 или новейшую модель Phenom приведёт к трате нескольких сотен долларов. Впрочем, наш среднестатистический пользователь, любитель MP3 и мобильного видео, всё же может потратить около $150 на видеокарту, если CUDA обеспечит прирост производительность 10x или 100x.

Мы выбрали две видеокарты, которые может себе позволить средний пользователь. Первая - GeForce 9600 GT с 1 Гбайт памяти GDDR3, которую сегодня можно найти в продаже примерно за $120 (от 3,5 тыс. рублей в России). Вторая видеокарта - GeForce 9800 GTX, которая сегодня активно заменяется GeForce 9800 GTX+/GeForce GTS 250 (на $30 дороже, если нужен 1 Гбайт памяти, от 5 тыс. рублей в России). Конечно, вы можете получить CUDA и на видеокарте 8600 GT за $75 (от 1500 руб. в России), но мы всё же рекомендуем меньший техпроцесс, более высокие тактовые частоты и большее число потоковых процессоров у карт более нового поколения.

Действительно, если у 8600 GT присутствует 32 потоковых процессора (унифицированных, программируемых блоков шейдеров), то у 9600 GT их уже 64, а у 9800 GTX - все 128. Эти потоковые процессоры могут вычислять все задачи CUDA параллельно, причём каждый может одновременно работать над многими операциями CUDA. Будет интересно посмотреть, как разница в 1,5 тыс. рублей и 64 потоковых процессора покажет себя в реальных условиях.

SETI@home

Если вы смотрели фильм "Контакт/Contact", то наверняка знаете суть программы SETI. Программа "Search for Extraterrestrial Intelligence/Поиск внеземных цивилизаций" использует радиоастрономию для поиска радиосигналов из космоса, которые, по своей природе, можно было бы отнести к разумным существам за пределами Земли. Исходные данные собираются в широкой полосе 2,5 МГц и отсылаются на основную базу SETI@home в Беркли. Как показано в фильме, большая часть радиоданных (если не вся) представляет собой случайный шум, подобно статическому шуму на фоне реликтового излучения. Программа SETI@home выполняет анализ этих данных в поисках неслучайных фрагментов, таких как пульсирующие сигналы и всплески амплитуды. Чем большая вычислительная мощность с плавающей запятой будет доступна для обработки данных, тем шире можно взять спектр и тем более чувствительным будет анализ. Именно здесь параллелизм многопоточной обработки и CUDA оправдывают себя.

Сотрудники в Беркли разделяют данные на одночастотные рабочие блоки по 0,35 Мбайт или 107 секунд. Сервер SETI@home затем распределяет работу по домашним компьютерам, на которых, как правило, работает клиент SETI@home в качестве скринсейвера. Когда проект SETI@home был запущен в мае 1999 года, его целью было сочетание вычислительной мощности 100 000 компьютеров. Сегодня в проекте участвуют более 300 000 активных компьютеров из 210 стран.

В тестах SETI@home нужно использовать один и тот же рабочий блок, чтобы получить надёжный результат. Мы обнаружили это только через несколько часов тестов, когда результаты были неповторяющимися. Лаборатория nVidia специально подготовила скрипт и пакетные файлы для тестирования SETI@home. Тест нужно запускать из командной строки, а не через красивый графический интерфейс. nVidia выслала нам все необходимые файлы, после чего картина производительности прояснилась довольно чётко.

Соседние файлы в папке 1000