Рассказ о поездке на Supercomputing Conference 2010 в США. Вторая часть: конференция в Новом Орлеане.





В середине ноября в США проводилась международная IT-конференция по высокопроизводительным системам (HPC) Supercomputing 2010 (SC10). Я входил в команду студентов от Нижегородского Государственного Университета, которая ездила на эту конференцию для участия в Student Cluster Competition (студенческое соревнование по созданию и использованию кластера). В этом посте я расскажу про саму конференцию и соревнование, про подготовку вы можете прочитать в постах «Введение» и «Первая часть: Redmond, Microsoft и кластер».

Когда мы прилетели с западного на восточное побережье США в Новый Орлеан (штат Луизиана) за 2 дня до начала конференции, в выставочном зале уже вовсю шла работа по установке и сборке будок (booth) разных фирм. К счастью, наша будка уже была готова, оставалось только установить там наш кластер, подключить его к сети и к большому телевизору-монитору и навести порядок. Конференция занимала треть гигантского здания «Convention Center», длиной около километра! На первом этаже проходила выставка, стояли будки фирм и нашего соревнования, а на втором этаже в нескольких конференц-комнатах в это время читались доклады.

Итак, нам нужно было собрать кластер. Во-первых, мы спокойно выдохнули, когда узнали, что наш кластер успешно добрался из Редмонда в Орлеан и стоит в будке Майкрософта. Одной из команд «немного не повезло» — ребята из Флориды так и не получили кластер до начала соревнования, им пришлось просить всех вокруг поделиться нодами и оборудованием, в итоге они запускались на 2 нодах странной конфигурации. Тем не менее здорово, что их не бросили в беде. Вообще на конференции в целом и на соревновании в частности была хорошая добрая атмосфера не «конкурирования», а честной борьбы за приз. Команды друг другу помогали, «менялись» полезной информацией и кодами, организаторы помогали студентам настраивать сеть, найти недостающие кабели и всячески поддерживали морально.
Когда наш кластер был успешно установлен и подключен, мы позвали нашего помощника из IBM — он быстро проверил процессоры и состояние нод, после чего нам пришлось заменить несколько процессоров в нодах, добавить две новые ноды, реанимировать одну из старых нод и подключить несколько GPU — в итоге к началу соревнования мы получили кластер из 8 нод (вместо 6 изначально), запустили на последнуюю спокойную ночь утилиту Lizard, которая подбирает оптимальные параметры для бенчмарка HPCC и ушли спать.



  



Расскажу о наших спонсорах. Генеральный спонсор Microsoft оплачивал нам дорогу в Штаты, именно люди из Майкрософта собирали кластер из отдельных деталей, 4 человека помогали нам с аудитом наших сборок приложений и учили меня управлять кластером, делать простейший troubleshooting и показали, как пользоваться утилитой для отображения загруженности нод (Jeff, Wenming, Josh, Mark — спасибо вам!). Второй по важности спонсор — IBM, предоставлял ноды кластера. NVidia, естественно, дала Теслы (NVidia Tesla M2050). А Intel был «сердцем» кластера и единственной оптимизацией, которую мы успели сделать в условиях ограниченного времени — спасибо за процессора Xeon и Intel Compiler (теперь, боюсь, мы умеем им пользоваться даже лучше, чем простым и встроенным Visual Studio Compiler). От PGI у нас был лицензионный ключ для необходимого для сборки PGI Workstation.




Minwin monitor показывает загрузку каждого ядра каждого узла кластера. В реальном времени. На большом телевизоре. По субъективным ощущениям, эта визуализация процесса привлекала больше внимания зрителей, чем презентации, крутящиеся на телевизорах других команд.



И вот, наступил первый день Student Cluster Competition. По правилам соревнования, в этот день нужно было запустить набор бенчмарков HPCC и передать судьям лучший результат к 5 вечера. Так как никаких входных данных у HPCC нет, многие команды запустили его еще до соревнования (что не запрещалось), но у нас кластер появился слишком поздно, поэтому HPCC доработал только к 4 часам вечера, а мы весь день молились, чтобы ничего не упало и не пришлось перезапускать бенчмарки. К счастью, всё прошло удачно, тест LINPACK показал 780 гигафлоп (что немного ниже ожидаемого, но достаточно хорошо).

В 5 часов вечера первого дня нам выдали входные данные для остальных приложений. На получение результатов у нас было 48 часов, поэтому работа закипела вовсю. Главным сюрпризом для нас стало то, что слова организаторов «данных будет больше, чем возможно обсчитать за это время» были поняты нами неправильно. Мы ожидали, что будет очень много наборов входных данных, поэтому можно будет запускать по очереди каждый пакет на всем кластере по кругу (чтобы если что-то неправильно работает, то были бы хотя бы какие-то результаты). Оказалось, что почти для всех задач входной набор был один, но он должен был считаться очень долго. Приятным исключением был Password Cracker — выданные пароли, естественно, можно было разбить на множество запусков взломщика.

В такой ситуации мы разделили кластер между задачами, оценив примерно время выполнения каждой из них, оставив немного свободного процессорного места для взломщика MD5 хэшей (так как он почти полностью работал на GPU, оставляя CPU для других задач).

Итак, пакеты были запущены на 48 часов, поэтому нам нужно было (в идеальном случае) только иногда следить, не упало ли чего.

Ниже я лишь вскользь упомяну о встреченных нами проблемах, так как они все очень специфичны для каждого приложения и в целом не представляют интереса.

Первое приложение (WRF) отказывалось собираться с нужными ключами в параллельном режиме (оно собиралось, но не масштабировалось на кластер). Было принято волевое решение запускаться на двух нодах с другими ключами, чтобы посчитать хоть что-то.

Входной набор данных второго приложения (FLASH) не убирался в оперативную память (если производить вычисления с требуемой судьями точностью). Нужно было либо увеличивать число процессов (24 процесса на двух нодах было недостаточно), либо ухудшать точность. Решили быстро посчитать с плохой точностью (вдруг и за это баллы дадут), а потом запустить с правильной точностью на большом количестве нод, причем с 3 процессами на одно ядро, чтобы умещаться в память. Такой способ запуска, естественно, сильно тормозил вычисления, но у нас хотя бы был шанс досчитать до конца отведенных 48 часов. После нескольких часов счета, когда у нас освободился еще один узел кластера и мы решили перезапустить это приложение с «контрольной точки» (checkpoint), мы этого сделать не смогли. Времени разбираться уже не было, пришлось запускать вычисления с самого начала.

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

Только последнее приложение (NAMD) отлично работало на CPU+GPU (причем, что удивительно, «CUDA не уставала») и закончило считать уже через 10-15 часов после начала соревнования.

Вот в таком режиме обнаружения проблем прошел день, потом ночь (мы даже успели поспать), потом еще день и ночь (здесь мы уже решили остаться с кластером) и наступил последний день. Нам нужно было отправить результаты вычислений к 6 вечера, чтобы на следующий день узнать, кто же победил.

Итогом неравной борьбы с трудностями и бессонной ночи стало то, что собранный с неправильными флагами WRF не получил баллов, FLASH не успел дойти до первой оцениваемой «контрольной точки», но был награжден несколькими баллами «за старания», NAMD по невыясненным до сих пор причинам получил не полный балл (хотя среди всех команд у нас были самые хорошие результаты, что не может не радовать), а Password Cracker смог всё-таки вскрыть часть паролей и получить законные баллы.

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

Всем командам были выданы таблицы с их баллами, но ни у кого нет сводной таблицы.

Итого, Майкрософт, Университет, да и мы сами вполне довольны результатом, мы получили бесценный опыт и если мы поедем в следующем году, то сможем учесть ошибки и может быть даже победить! :)

После объявления результатов соревнования у нас оставался еще целый вечер и утро следующего дня (до 13.00, когда нужно было ехать в аэропорт), чтобы погулять по городу и изучить окрестности, что мы и сделали, отправившись в так называемый «Французский квартал» Нового Орлеана. Как известно, город является столицей джаза, поэтому почти в каждом кафе играла живая музыка, а на улицах сидели музыканты, с некоторыми из которых нам даже удалось пообщаться. Город, в отличие от Редмонда, совсем не такой тихий и американский, а скорее даже очень европейский (по крайней мере центральная его часть). Узкие улочки, по бокам — невысокие красивые дома со свисающми балкончиками, очень много людей, местами шумно и грязно.







Но не смотря ни на что, город нам понравился, как и США в целом :)

На следующий день мы уже поехали в аэропорт, чтобы с двумя пересадками добраться на родину.

Ссылки на дополнительные материалы про нашу поездку:

Несколько ссылок на интервью с нами на youtube:

Статьи на theregister:

Фотоальбомы:





USA 2010


USA 2010 From Eugene Grines




Спасибо за внимание! Добро пожаловать в комментарии — вся наша команда постарается ответить на ваши вопросы.

For more complete information about compiler optimizations, see our Optimization Notice.