Современный мир все более нуждается в суперкомпьютерах. Поэтому сегодня ведется постоянный поиск новых архитектур, которые могли бы побороть недостатки нынешних. И порой решения находят там, где их вовсе не ожидают встретить. Так произошло с графическими процессорами (GPU, Graphical Processor Unit), которые в 90‑е годы, под влиянием индустрии компьютерных игр, получили мощный заряд для развития. А возросшая производительность позволила им освоить ранее чужеродные для видеокарт территории. 

Поначалу графические процессоры применялись исключительно по прямому назначению, то есть для одновременной обработки множества элементарных графических примитивов посредством «зашитых» аппаратных алгоритмов. Следующее поколение GPU поддерживало шейдеры — программы, которые определяют окончательные параметры объекта или изображения. Однако выполнять общие вычисления на тех процессорах было нецелесообразно — из‑за низкой точности вычислений. Только выпущенные в 2003 году видеокарты семейства nVidia GeForce FX в полной мере поддерживали 32‑разрядную арифметику. Именно они стали пионерами использования GPU не только для обработки гигантского количества полигонов, но и для ускорения вычислений в различных программах, что способно ощутимо разгрузить центральный процессор. 

Расширение первоначально узкой специализации GPU привело к появлению мощных устройств, которые способны обеспечить многократное ускорение операций с плавающей запятой. Первое такое устройство предложила компания nVidia. 

Семейство Tesla 

Летом минувшего года была впервые продемонстрирована карта nVidia Tesla C870, базирующаяся на логике G80. Внешне этот вычислитель практически не отличается от привычных графических ускорителей, если бы не одно «но» — полное отсутствие видео­входов. Пиковая производительность устройства при обработке операций вещественной арифметики достигает 500 гигафлопс. 

С точки зрения архитектуры, Tesla представляет собой систему из 128 потоковых процессоров, которые работают с общей видеопамятью. Каждый из них может выполнять две команды за такт. Процессоры объединены в группы SIMD (single instruction, multiple data) по 16 мультипроцессоров. Группы выполняют одну и ту же программу (шейдер), но при этом независимы друг от друга. Мультипроцессор оснащен механизмом барьерной синхронизации потоков, и потоковые процессоры в нем совместно используют доступные программисту 16 КБ явно адресуемой статической памяти. 

GPU nVidia Tesla поддерживает возможность разработки полноценных программ на языке CUDA (C Unified Driver Architecture). CUDA является одним из диалектов языка С, поэтому его распознает не только графический, но и центральный процессор. Его использование в значительной мере облегчает задачу программистам, привыкшим работать в терминах C и подобных ему языков, в то время как традиционное программирование для GPU требует совсем иного подхода, который приходится изучать отдельно. 

В июне текущего года nVidia представила новый графический процессор для высокопроизводительных вычислений — Tesla T10P. Он потребляет до 225 Вт энергии, а заявленная пиковая производительность достигает 1 терафлопс. Вычислитель должен появиться в продаже осенью 2008 года, а пока пользователям доступны прошлогодние решения: плата Tesla C870, рабочая станция Tesla D870 производительностью до 1 Тфлопс и сервер Tesla S870 (до 2 Тфлопс). 

Семейство FireStream

Выпускает GPU для высокопроизводительных вычислений и компания AMD. Устройства серии носят имя FireStream и относятся к классу SIMD. То есть программу выполняют все потоковые процессоры одновременно, что отличает эти GPU от реализации nVidia. Каждый потоковый процессор содержит четыре функциональных устройства для обработки арифметических действий и по одному — для вычисления элементарных функций и для выполнения команд перехода. Арифметические функциональные устройства выполняют две команды за такт, что означает возможность обработки до 8 команд одновременно. Чтение из памяти производится через сегментные регистры, каждый из которых адресует участок памяти в виде матрицы размерностью 8192 на 8192 элемента. Режимов записи у AMD FireStream два: регулярный и произвольный. В первом случае программа записывает в каждый из буферов выхода по одному элементу размерностью 128 бит с фиксированным расположением. Что касается произвольной записи, то она может проводиться по любому адресу, но для нее будет доступен только один буфер. 

Выпущенная в минувшем году плата FireStream 9170 оснащена 2 ГБ памяти, а новая, анонсированная в июне FireStream 9250 — лишь 1 ГБ. Но при этом, согласно заявлению разработчиков, производительность решения удвоилась, достигнув 1 терафлопса. Плата потребляет не более 150 Вт электроэнергии и помещается в одноюнитовый модуль. 

Применение и проблемы 

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

Современные GPU для сложных расчетов применяются не только самостоятельно, но и в составе grid‑систем. Так, графические процессоры задействованы в одном из крупнейших проектов Folding@Home, который развернули в 2000 году для решения задачи определения структуры белка, что способно помочь в лечении ряда серьезных заболеваний. GPU «присоединились» к проекту в 2006 году, и вскоре их роль в расчетах стала весьма ощутимой — около 31 терафлопс. В данный момент самыми мощными вычислителями (до 80% мощностей) в составе этой grid‑системы являются, к удивлению многих, игровые приставки последнего поколения Sony PlayStation 3. Однако здесь нечему удивляться, если заглянуть внутрь этой консоли — она основана на мощных процессорах Cell, на которые возлагают большие надежды по обработке ресурсоемких вычислений. 

При всей перспективности графических вычислителей в области HPC, эта архитектура имеет ряд недостатков, устранение которых, скорее всего, потребует много времени и средств: это высокая задержка чтения из видеопамяти в шейдере, длительное время запуска шейдеров и медленный обмен данными между ОЗУ и видеопамятью. Кроме того, несовместимость архитектур от разных производителей приводит к тому, что переход с одной платформы на другую потребует от программиста изучения новых, нестандартных средств разработки. 

Поэтому ближайшие векторы развития «графических» вычислителей, по всей вероятности, будут связаны не только с прямым наращиванием мощностей и организации архитектур, но и с 4остроением стандартов для разработки и выполнения параллельных программ. 

Комментарий вендора: Лутц Айгенфельд, менеджер по развитию бизнеса компании nVidia

Tesla представляет собой 128 процессоров в одном GPU, и все это занимает уже не комнату, а лишь одну плату в компьютере. А если учесть, что уже созданы устройства с 2 или 4 платами, получаем более 500 процессоров в одном устройстве. На основе данной технологии можно создать суперкомпьютер. В дальнейшем решение будет поддерживать среду Windows, но пока мы делаем акцент на Linux. Сегодня подавляющее большинство высокопроизводительных вычислений проводятся в среде Linux, однако nVidia планирует укреплять сотрудничество с Microsoft в этом вопросе. 

Мы уже осуществили около 160 внедрений в Германии, одно из крупнейших — в университете города Вуперталь. Университет специализируется на высокопроизводительных вычислениях в самых разных сферах, включая работу с рентгеновскими лучами, аудио‑ и видеообработку, интерпретацию показателей радаров, молекулярные исследования, радиовещание, медицину и пр. 
Есть ряд интересных примеров использования в военной сфере: например, если необходимо создать симуляцию военных действий или конфликтной ситуации в гражданской среде. В настоящее время с помощью общего API‑интерфейса с Tesla могут работать все программисты С++, поэтому данное решение используется везде — от финансовой сферы до киноиндустрии. Ведь, чтобы оцифровать видео, нужно отсканировать каждый кадр, что само по себе является достаточно длительным процессом, и отдельно поработать над преобразованием цветов. 
Разработчики ПО уже заинтересовались технологией. Так, на форуме по программированию CUDA было зарегистрировано около 20 тысяч человек, и в настоящий момент создано более двух сотен приложений для финансовой сферы, химии, биологии и проч. 
В дальнейшем мы планируем развивать онлайн-рендеринг с помощью графического процессора. А поможет нам в этом система рендеринга и визуализации изображений mental ray, которая интегрирована с пакетами Autodesk, Maya, 3ds Max и SolidWorks.

При подготовке статьи использованы материалы сайта parallel.ru