В ноябре этого года мне посчастливилось попасть на студенческое соревнование по высокопроизводительным вычислениям Student Cluster Challenge, проводимое в рамках международной конференции Supercomputing 2010 в США. Начало моего рассказа можно прочитать тут.Итак, 4 ноября в 2 часа ночи мы полетели в США. Перелет Нижний Новгород — Франкфурт (Германия) — Seattle (USA) для всех нас был ожиданно неприятным. 15 часов сидеть в узком кресле без возможности вытянуть ноги — неоспоримый повод проклинать того, кто придумал посреди нашей планеты сделать такой гигантский Атлантический океан :)
Несмотря на всю неприятность сидения в самолете, мы успешно прибыли в аэропорт Сиэттла, где нас встречал наш начальник и идейный предводитель, а также сотрудник Microsoft Джон.После получасовой поездки из Сиэттла в Редмонд на лимузине (да-да, Майкрософт не мелочится :) ), нас поселили в двух апартментах (apartments) недалеко от одного из зданий Майкрософт, в котором нам и предстояло работать.
Надо отметить, что уезжая из холодного и серого Нижнего, мы не ожидали увидеть Редмонд солнечным и зеленым городом, с желтыми и красными кленами, зеленым газоном и широкими улицами. В дневное время город выглядит вымершим — ни машин, ни людей, но очень чисто, светло и спокойно, даже ночью. Люди появляются только до и после работы — один раз мы видели даже небольшую пробку!
Здание Microsoft, в котором мы провели всю последующую неделю, тоже было удивительно гостеприимным и пустым, причем не только в выходные (что логично), но и в будние дни. Больше половины кабинетов были пусты. Наше здание (#25) было трехэтажным, с прозрачными стеклянными стенами, большой парковкой и высокой столовой, из которой открывался вид на небольшой парк с бегающими по деревьям белками :)
Нашей команде из 6 студентов и ментора выделили большую комнату, куда вскоре переехал наш кластер, всем дали компьютеры (лэптопы с разворачивающимся экраном и тач-скрином) и велели «работать дальше», чем мы и занялись. В течение недели каждый день мы приходили в нашу лабораторию, работали там вместе с несколькими инженерами Microsoft, которые нам очень помогали. На второй день кластер из состояния «стоит неизвестно где, доступен по Remote Desktop» переехал в нашу комнату, чтобы мы могли подключаться к нему напрямую, по ethernet. Главным «преимуществом» кластера рядом был непривычный рёв нескольких десятков кулеров, самые шумные из которых охлаждали маленький Infiniband-свитч.
Расскажу немного про то, что такое кластер с точки зрения пользователя (то есть нас). Сразу оговорюсь, что никогда не работал с кластерами под Linux, да и под Windows видел всего два кластера.
Наш кластер (итоговая конфигурация) состоял из 8 «нодов» (nodes). В каждом стояли по два процессора Intel Xeon L5640 (Westmere), по 6 ядер на каждом процессоре, на пяти нодах стояли по две карточки NVidia Tesla M2050. Ноды соединялись по медленному гигабитному Ethernet и по быстрому двадцатигигабитному Mellanox Infiniband. Ethernet-switch и Infiniband-switch на картинке:

Вот так страшно выглядел наш кластер в сборе уже на соревновании:

(между прочим, известный бенчмарк LINPACK показывал производительность около 700 гигафлоп!)
Две сети были сделаны специально, чтобы системные сообщения для администрирования кластера ходили по независимому медленному каналу, в то время, как приложения, занимающиеся вычислениями, «общались» по быстрому Infiniband’у.
На кластере стояла последняя версия Windows HPC Server 2008 R2 с установленным Microsoft HPC Pack, в состав которого входили инструменты для администирования, настройки и мониторинга кластера, автоматически ставился Microsoft MPI (основанный на MPICH2, но оптимизированный под Windows) и удобный HPC Job Manager, позволявший управлять задачами через простой GUI или Command-line интерфейс. Мне не с чем сравнить, но на наших задачах пользоваться им было очень приятно. Пишешь в командной строке
job submit /numnodes:2 /workdir:\\Share\Application\dir\ mpiexec -n 24 Application.exe
и задача ставится в очередь, и автоматически выполняется, когда появляются свободные ресурсы. Это избавляло нас от проблем типа «Кто опять запустился на седьмой ноде?? Моя задача тормозит!111», процесс выполнения задач автоматизировался на ура.
Расскажу немного о приложениях, которые в этом году нужно было запускать на соревновании. В нашей команде каждый из четырех человек отвечал за одно из четырех приложений и двое отвечали за пятое приложение, которое не имело ранее версии под Windows и вообще было самым «сложным» для нас.
Первое приложение — пакет бенчмарков HPCC, который запускался отдельно от остальных приложений и оценивал производительность кластера в общем. В HPCC входит известный бенчмарк LINPACK (решающий гигантскую систему линейных уравнений и показывающий, насколько хорошо кластер выполняет floating-point операции), а также бенчмарки для тестирования пропускной способности канала, связывающего ноды кластера (Infiniband), и скорости работы оперативной памяти. Для оптимального подбора начальных параметров для LINPACK была использована утилита Lizard (LInpack wiZARD), написанная специально для Windows.
Следующие несколько приложений я опишу менее подробно, если у вас возникнут вопросы, я попрошу своих сокомандников ответить в комментариях.
- WRF — приложение, используемое для предсказания погоды
- FLASH — большой модульный фреймворк для моделирования разнообразной физики, мы использовали его для решения задачи неустойчивости Рэлея — Тейлора (http://ru.wikipedia.org/wiki/Неустойчивость Рэлея — Тейлора)
- NAMD — пакет для симуляции задач молекулярной физики. Одно из двух нашх приложений, которое использовало графический процессор для вычислений.
Особняком стояла задача «Password cracker» — нужно было «взломать» пароли, зашифрованные алгоритмами MD5 и Blowfish. Можно было использовать любой инструментарий (с открытым или закрытым кодом), мы использовали собственные реализации этих алгоритмов, причем они умели работать как на CPU, так и на GPU!
Итак, за неделю в «царстве Microsoft» Редмонде мы разбирались, как пользоваться кластером, инженеры Майкрософт написали мне несколько мануалов по решению проблем и тестированию работы кластера, мы успели также «допилить» наши приложения и полетели в Новый Орлеан (штат Луизиана) на конференцию. Кластер был отправлен туда за пару дней до нашего отлета.
О самой конференции Supercomputing 2010, о соревновании Student Cluster Competition и немножко о Новом Орлеане читайте в следующем посте: «Вторая часть: конференция в Новом Орлеане».

Комментарии
Очень интересно!
И все эти 8 нодов уложились суммарно в 2.6 КВт?
Сергей, спасибо, постараюсь и следующие посты держать планку :)
Да, все эти ноды при очень интенсивном использовании CPU (но без GPU) дают точно нагрузку 25-26А (это при запуске LINPACK и HPCC). При запуске других приложений на CPU (загрузка около 90-95%) и забивании GPU (неизвестно насколько) потреблялось около 20А. Так что кластер был собран идеально в плане использования Power Budget.
Круто, чёрт побери.
Жги дальше.
мне одному кажется, что 700 гигафлоп маловато для 5 нод с 2*GPU?
или это тест без использования GPU?
а что применяли в качестве ломалки паролей?
А какие еще фирмы производители присутствовали?
Кто что показывал?
ps. пишу сохраненной сессией с работы.
Ильнар, 700 гигафлоп мало, но мы не использовали GPU. Если мы поедем в следующий раз, то мы просто обязаны портировать LINPACK на GPU - тогда мы должны достигнуть терафлопа.
Пароли мы ломали самодельными алгоритмами, переписанными на GPU. Сторонними тулзами не пользовались (хорошо это или плохо - мы еще не решили).
Насчет других фирм: были сильные команды с Acer, Cray, Dell, HP. Список всех команд можно посмотреть здесь: https://sites.google.com/site/sc10scc/the-teams , но я постараюсь его немного проанализировать в следующем посте.
Так бывает иногда приятно написать в командной строке
job submit /numnodes:2 /workdir:\ShareApplicationdir mpiexec –n 24 Application.exe....
"Node" вполне просто переводится на русский язык: "узел".
Я бы ожидал терафлоп даже с одной ноды, где 2 GPU такого класса, хотя линпак линпаком, мало ли как они го нагрузят.
Смотрел смотрел, так и не понял где раскладка архитектуры использованной техники каждой команды.
А ПО для тестов в первых 4-х случаях вы должны были использовать то что прислал вендор? Прочитал в FAQ про A или В, не А+В, что некоторое ПО не работает если не все ноды одинаковы. Не было попыток похачить эту проблему в ПО? или можно можно было оптимизировать код? и еще, какой компилятор применялся, от Intel, или PGI (вижу в списках, и видел что они делают компилятор)
А что поставлял для вас IBM? ну и другие ваши спонсоры, какой вклад сделал каждый из них в ваш кластер, ПО, ...?
Страницы