ОБЗОРЫ
Linpack и его конкуренты
Общеизвестна популярность мирового рейтинга суперкомпьютеров Top-500 (top500.org), а также недавно появившегося интересного российского аналога Top-50 (supercomputers.ru/index.php?page=rating). Компьютеры в каждом из них ранжируются по результатам, показанным в тесте Linpack. Этот тест фактически представляет собой библиотеку программ на Фортране, которая применяется для решения задач линейной алгебры - сферы, активно востребованной во множестве инженерных расчетов, однако для еще большего числа проблем являющейся неактуальной (например, в физическом моделировании). Библиотека Linpack стала использоваться в качестве теста далеко не сразу, а предложил такой вариант ее эксплуатации в 1979 г. Джек Донгарра, ныне возглавляющий лабораторию инновационных компьютерных технологий Университета Теннесси. С помощью Linpack в тот год было проверено 17 машин - от DEC PDP-10 до Cray 1, которая и показала максимальный результат - 4 Мфлопс*1.
_____
*1 Кстати, в СССР в 1980 г. была запущена первая многопроцессорная ЭВМ ПС-2000, состоящая из 64 24-разрядных вычислителей и показавшая быстродействие около 200 Мфлопс!
С тех пор появились расширенные варианты данного теста, в частности High-Performance Linpack, ориентированный на современные параллельные и высокопроизводительные системы. Однако Linpack, оставаясь самым популярным на сегодня способом оценки производительности вычислительных систем, продолжает вызывать справедливые нарекания. Впрочем, нарекания вызовет и любой другой способ, в котором производительность компьютера сводится к одному показателю. Вычислительная машина - система сложная и многокритериальная, и одна и та же прикладная задача в зависимости от своей внутренней структуры может выполняться на компьютерах с одинаковыми показателями в тесте Linpack в десятки раз быстрее или медленнее. Поэтому в 1987 г. национальный научный фонд США предложил тест Perfect из 13 приложений, в 1991 г. 32 физические лаборатории Великобритании сформировали список тестов, актуальных для собственных задач, а в 2002-м известная аналитическая компания IDC выдвинула свой, так называемый сбалансированный рейтинг высокопроизводительных систем (IDC Balanced Rating, www.hpcuserforum.com/benchmark/). В свое время создало оригинальный набор тестов NAS Parallel Benchmark для собственных нужд и агентство НАСА (www.nas.nasa.gov/Software/NPB/).
Результаты Cray X1 говорят сами за себя
Существует популярный набор независимых тестов SPC (www.storageperformance.org) и для анализа производительности систем внешнего хранения данных. Он охватывает все подсистемы машины, связанные с хранением данных на жестких стационарных, съемных и лазерных дисках и лентах, сетевых системах, корпоративных накопителях и других аппаратных модулях, а также всевозможные программные решения по ведению БД и архивов. Последняя версия теста SPC-2 (пока находящаяся на этапе финального тестирования) расширена средствами анализа эффективности обработки сверхбольших файлов и видео и объемных запросов к БД.
Рождение HPCC
Однако все эти попытки не привели к возникновению общепризнанной системы тестов, потому что проведение множества испытаний обычно бывает сложным, продолжительным и дорогостоящим и требует длительной настройки на каждый из них, а Linpack к тому же активно поддерживается отдельными крупными производителями суперкомпьютеров и кластеров. В числе особо недовольных обобщенными показателями Linpack оказались сотрудники всевозможных силовых структур. Они были заинтересованы в результативности собственных приложений весьма специфической направленности (шифрование, химическое и физическое моделирование, проектирование оружия, прогноз погоды), которые на самых дорогих и лучших Linpack-системах первых строчек Top-500 демонстрировали весьма скромные практические результаты. Например, американский кластер ASCI Q из 8192 процессоров, предназначенный для моделирования работы ядерного оружия, всего в 4,64 раза по тесту Linpack уступал японскому "Симулятору Земли", много лет державшемуся в Top-500 на первом месте, однако испытание с помощью STREAM показало его уточненный реальный проигрыш в 36,25 раз.
Поэтому в 2003 г. при поддержке Национального научного фонда США, министерства энергетики и военного агентства передовых исследований DARPA ученые Университета Теннесси в сотрудничестве с коллегами из США и Европы разработали новый набор тестов, получивший название HPC Challenge benchmark (HPCC, экстремальное тестирование высокопроизводительных систем, icl.cs.utk.edu/hpcc/). Он выявляет отдельные характеристики важных элементов системы (процессора, памяти, межузловых соединений) и позволяет оптимизировать ПО под конкретную конфигурацию. Ведь одним программам требуется немного памяти и мощный процессор, а другим - в основном быстрая оперативная память и значительный размер кэша, но при этом обращения к ним могут быть как случайными, так и последовательными, что тоже существенно влияет на производительность, и т. д.
Последняя версия этого теста была продемонстрирована на конференции по суперкомпьютерам, прошедшей в Питтсбурге в ноябре 2004 г. Она объединила 23 тестовых измерения разных характеристик компьютера, разделенных по восьми группам:
1) Linpack - скорость вычислений с плавающей запятой на задачах решения систем линейных уравнений;
2) DGEMM - скорость вычислений с двойной точностью на задачах матричных умножений (оригинальная версия теста расположена на сайте www.netlib.org/benchmark/hpl/);
3) STREAM - анализ устойчивости и пропускной способности ОЗУ на задачах векторных вычислений с данными, объем которых превосходит размер кэша (www.cs.virginia.edu/stream/). Эта характеристика важна потому, что типичный ПК нередко расходует лишь 5% от пиковой производительности на целочисленные арифметические операции, простаивая в ожидании данных, если не задействован кэш;
4) PTRAMS - скорость связи пары процессоров, эффективность их взаимодействия, общая коммуникационная характеристика системы (www.netlib.org/parkbench/). Измеряется путем передачи больших объемов данных в памяти мультипроцессорной системы;
5) RandomAccess - скорость случайных обновлений данных в оперативной памяти. Измеряется временем считывания целого числа из ОЗУ, его изменения и записи обратно (актуально для построения кэш-таблиц);
6) FFTE - скорость вычислений с двойной точностью на задачах дискретного преобразования Фурье (www.ffte.jp), необходимого для анализа спектра сигнала;
7-8) безымянные наборы тестов - исследуют время отклика процессоров при обращении к ним через сеть, а также ширину ее пропускания. Для этого система испытывается одновременным воздействием набора шаблонов сетевой активности, характерных для типичных видов деятельности в сети. Используются тесты b_eff (www.hlrs.de/organization/par/services/models/mpi/b_eff/), проверяется время передачи одного байта и 2 Мб данных и т. п.
Для работы теста HPCC надо, чтобы компьютер поддерживал технологию MPI (взаимодействие параллельных процессов путем передачи сообщений) и BLAS (базовые функции линейной алгебры).
Как определить лучшие HPCC-системы?
Сильной стороной HPCC является единая веб-среда учета и ведения архива тестов, формирования отчетности, верификации показываемых компьютерами результатов. Для тестирования достаточно одной программы (необходимо выполнить базовый и оптимизированный прогоны; при этом все тесты выполняются одновременно), а результаты передаются и публикуются на сайте проекта автоматически. В перспективе создатели HPCC намерены превратить ее в универсальную систему проведения любых суперкомпьютерных тестов, реализовать режим э-подписи каждого проверяемого компьютера, дабы избежать фальсификации результатов, дополнить HPCC тестами системы ввода-вывода и перенести его на разные платформы, а тесты - на различные языки программирования.
В условиях проведения многочисленных испытаний говорить об однозначном превосходстве одной машины, к счастью, невозможно, но показатели HPPC на середину мая 2005 г. совершенно однозначно демонстрируют превосходство классических суперкомпьютерных и SMP/ NUMA-архитектур над кластерными - в среднем на порядок! А в отдельных тестах производительность параллельных векторных архитектур (однотипная процессорная обработка векторов данных) и интегрированных систем с широкой полосой пропускания процессора, памяти, соединений превышает показатели скалярных решений в сотни раз. Поэтому немудрено, что в лидерах HPCC находятся аппараты Cray, IBM, NEC, а также Hewlett-Packard, Sun и последние модели SGI Altix (SGI активно взаимодействует с IBM в сфере создания петафлопных суперкомпьютеров), насчитывающие десятки процессоров (а не десятки тысяч, как кластеры, лидирующие в Top-500).
Популярность и модность кластеров, конечно, оправдана тем, что с их помощью удается в рамках ограниченных бюджетов решать определенный, хотя и довольно узкий круг задач. А удобство тестов наподобие Linpack в том, что используемый в них единственный показатель хорошо подходит для сравнения систем и к тому же весьма нагляден. Поэтому, хотя распространенность HPCC будет расти (ведется обсуждение возможности замены Linpack в Top-500 на HPCC, но вряд ли это произойдет быстро), более наглядный Linpack прослужит еще долго.
Заслуга проекта HPCC прежде всего в том, что пользователи и потенциальные покупатели высокопроизводительных систем наконец получили серьезный, проверенный и унифицированный инструмент более-менее точного анализа и сравнения возможностей машин под конкретную задачу. А Top-500 останется скорее маркетинговым проектом, и продолжит существование при поддержке фирм - разработчиков Linpack-ориентированных кластерных систем (и любителей линейной алгебры :).
Сторонникам кластеров
Поклонникам кластерных решений можно порекомендовать интересный общедоступный продукт Condor (www.cs.wisc.edu/condor), развиваемый университетом Висконсин-Мэдисон уже 15 лет*1. Он ориентирован на новый класс так называемых крупномасштабных вычислений (High-Throughput Computing), в основу которых положено измерение не счетной производительности, а условного объема работ, который многопроцессорная система способна выполнить за год. На первый план здесь выходит максимальная утилизация всех компьютерных возможностей, мгновенное использование каждой простаивающей машины в сети, распределение и планирование работ и ресурсов по проектам (немало читателей PC Week/RE наверняка еще помнят, как диспетчеры планировали каждый час прогона программ на ЕС ЭВМ). Condor предоставляет механизм распределения и планирования загрузки процессоров, схемы расстановки приоритетов задач, мониторинга и управления ресурсами. При этом продукт ориентирован не только на современные кластерные архитектуры, но и на обычные корпоративные сети - если пользователь ПК какое-то время не касается клавиатуры и мыши, система забирает ресурсы его процессора для других нужд и выполнения сторонних задач. Поможет продукт и в создании grid-систем.
_____
*1 В родном университете Condor уже не один год распределяет ресурсы тысячи ПК и за сутки генерирует вычислительное время 650 процессоров - то есть типичный компьютер загружен на 35%
Программирование для суперкомпьютеров
Но без программной начинки любая самая производительная аппаратура, конечно, никакой ценности не представляет. Создание же эффективно работающего ПО для параллельных систем остается пока весьма трудоемкой задачей.
Гай Стил, один из авторов технологии Java и ее описания, создатель Лисп-диалекта CommonLisp и языка Scheme, взялся за разработку нового языка программирования Fortress (research.sun.com/ projects/plrg/fortress0618.pdf), объявив, что намерен сделать для Фортрана то же, что Java сделала для Си++. Деньги на проект выделяет Sun, суперкомпьютерную инициативу которой, в свою очередь, финансирует DARPA. Стил отмечает, что Java - далеко не лучший способ для ведения числовых вычислений, и в качестве основы Fortress, ориентированного на реализацию числовых алгоритмов для параллельных архитектур, выбрал Фортран. Правда, новый язык будет с ним несовместим - его синтаксис представляет собой смесь выражений Фортрана, Java и математических формул. Последние записываются благодаря использованию Unicode и специальных символов, вследствие чего внешний вид Fortress-программы более напоминает статью из математического журнала. А приверженцам Фортрана автор предлагает работать с его мощным стандартом F2K.
Fortress отличается строгой типизацией, наличием средств обеспечения безопасности и автоматического управления памятью, а также возможностью расширения языковых конструкций и использования готовых компонентов. Базовое понятие Fortress - черта (trait), аналог интерфейсов в Java, а объект складывается из набора черт. Конструктивно же Fortress задуман так, что программа на этом языке может легко оптимизироваться и распараллеливаться компилятором (который обычно переводит Fortress-программу в Си-код).
Впрочем, на деньги DARPA уже был разработан параллельный диалект Java для мультипроцессорных и grid-систем под названием Titanium. Он отличается гибкой поддержкой многомерных массивов, операторами циклов, ориентированными на параллельное выполнение, зонным распределением памяти, поддержкой распределенных наборов данных, средствами обеспечения многозадачного выполнения и др. Titanium-программа без модификации может работать на самых разных многопроцессорных архитектурах, а общедоступные оптимизирующие компиляторы, отладчики, документацию и всевозможные дополнительные средства разработчика можно найти на сайте проекта titanium. cs.berkeley.edu.
IBM также разрабатывает язык программирования X10 для иерархических параллельных архитектур. Он позволит создавать программы, хорошо масштабируемые на разное число процессоров, а особое внимание в проекте уделено упрощению процесса разработки параллельного ПО. X10 - это часть проекта IBM PERCS 2010 по проектированию адаптируемых и масштабируемых систем и выпуску к 2010 г. новых аппаратно-программных решений, которые должны десятикратно повысить продуктивность создания ПО для параллельных архитектур. В основу PERCS положены понятия элементарных действий (атомов) и виртуальных часов, распределяющих такты процессоров между атомами.
А Cray (www.cray.com) при поддержке DARPA готовит высокоуровневый язык программирования Chapel (chapel. cs.washington.edu), в котором вводятся абстрактные (отделенные от конкретных машинных архитектур) понятия параллельных данных, параллельных задач, а также средства организации вложенного параллелизма (любая задача, в свою очередь, может быть многозадачной). Особое внимание авторы проекта, конечно, уделяют оптимизации, она будет автоматически выполняться транслятором при переходе от абстрактной машины к реальной. Специалисты Cray обещают выпустить и общедоступную версию Chapel.
По многочисленным прогнозам, массовый выпуск дешевых многопроцессорных конфигураций ПК произойдет к концу текущего десятилетия. Но пока на рынке практически полностью отсутствует прикладной софт для любых отраслей деятельности, который умел бы хорошо утилизировать ресурсы даже двухпроцессорных машин. То есть грядет масштабная переработка практически всего продаваемого в мире ПО под функционирование на мультипроцессорных системах. Поэтому изучать соответствующие технологии надо уже сегодня.