Распараллеливание на различных уровнях иерархии архитектуры компьютерных систем стало реальностью. «В самом низу» — это параллелизм на уровне команд, на уровне микропроцессора. «В самом верху» — распараллеливание между компьютерами в кластере. Второму подходу был посвящен Международный научно-практический семинар «Высокопроизводительные параллельные вычисления на кластерных системах», состоявшийся на базе Нижегородского государственного университета.
Проректор ННГУ Р. Г. Стронгин рассказывает об успехах своего Университета |
Поддержку семинару оказали компания Intel, Российский фонд фундаментальных исследований, Министерство образования РФ, Фонд содействия развитию малых форм предприятий в научно-технической сфере. Активное участие Intel в работах по параллельным технологиям оказалось для меня несколько неожиданным — за этим, судя по всему, скрываются некоторые глубинные интересы компании. Я был участником семинара и постараюсь дать обзор представленных на нем докладов, полагая, что читателям это будет интересно как для знакомства с тем, что делается в России в этой области, так и в качестве информации о современном состоянии «кластеростроения».
Председатель оргкомитета, первый проректор ННГУ проф. Р.Г. Стронгин (кстати, автор вышедшей за рубежом фундаментальной монографии, посвященной задачам глобальной оптимизации) сделал доклад о распараллеливании при поиске глобально-оптимального решения. Он убедительно продемонстрировал, что само по себе распараллеливание — не панацея; важнее эффективный выбор «базового» алгоритма, и лишь затем следует его распараллеливание.
Б.Н. Четверушкин, директор столичного Института математического моделирования РАН, представил обзор работ, выполнявшихся на параллельных системах в ИММ. Главным образом это задачи газовой и гидродинамики, «классической» области применения суперкомпьютеров. Докладчик привел краткие данные и о том, как развивался парк суперкомпьютеров в ИММ РАН: от систем на базе транспьютеров к МРР-системам Parsytec с распределенной памятью и далее к Linux-кластеру. Последний, стоимостью всего 22 тыс. долл., включает 12 двухпроцессорных узлов на базе материнских плат Asus P2B-D и Pentium III/600 МГц, соединенных каналами Fast Ethernet.
Ряд сообщений был посвящен кластерным ресурсам, созданным в том или ином институте. Здесь следует отметить в первую очередь доклады В.И. Золотарева и А.Н. Андреева (соответственно Санкт-Петербургский и Московский госуниверситеты), в которых рассказывалось о кластерах, использующих для связи между узлами высокоскоростные каналы SCI и «фирменный» вариант MPI — ScaMPI. Поскольку такое решение стоит очень дорого, в обоих случаях университеты отказались от коммутаторов, что привело к формированию топологии межсоединения узлов, основанной на их кольцеобразном соединении. SCI-кластер МГУ, например, имеет топологию двумерного тора. В обоих случаях точнее говорить об иерархической системе из нескольких кластеров. Так, в СПбГУ С-кластер на базе SCI (порядка 40 процессоров Pentium III/600 МГц и 933 МГц) сочетается с двумя L-кластерами на базе Fast Ethrenet и Pentium III/933 МГц. Наконец, в СПбГУ есть еще и факультетские S-кластеры на базе Сeleron. Измеренные задержки и пропускная способность на уровне MPI для Pentium III/Fast Ethernet составили 130 мкс и 10 Мбайт/с, а для ScaMPI — 4,5 мкс и 68 Мбайт/с соответственно. SCI-кластер в МГУ построен на базе Pentium III/500 МГц (18 двухпроцессорных плат от Asus с набором микросхем 440BX). Его дополняет 40-процессорный кластер на базе Pentium III/850 МГц и Fast Ethernet. Более высокая производительность последних процессоров позволила достигнуть и более высокой производительности на тестах Linpack parallel, чем у SCI-кластера. Добавим, что в МГУ используют специальные дешевые платы типа watch-dog для автоматической перезагрузки узлов в случае их зависания.
Весьма мощные по процессорным возможностям узлов кластеры (подарок компании Intel) установлены и в ННГУ. Первый включает 12 двухпроцессорных ПК на базе Pentium III/1 ГГц, связанных каналами Gigabit Ethernet; его «венчают» два четырехпроцессорных сервера на базе Pentium III/700 МГц. Второй кластер с каналами Fast Ethernet содержит 12 компьютеров на базе Pentium 4/1,3 ГГц.
Таким образом, в ведущих учебно-научных центрах страны установлены сегодня системы, вполне отвечающие современному мировому уровню кластерных технологий, однако число узлов в них пока еще существенно меньше, чем в крупных кластерах западных университетов.
В сообщении автора, посвященном применению кластерных технологий Beowulf в Центре компьютерного обеспечения химических исследований, действующем на базе Института органической химии РАН (Москва), речь шла об исследовании производительности стека протоколов TCP/IP при работе с Fast Ethernet и Gigabit Ethernet на медной проводке. Для кластерных технологий это актуально, в частности, потому, что средства распараллеливания типа MPI обычно работают поверх TCP/IP. Исследования выполнялись: для Fast Ethernet — на 10-процессорном кластере на базе Pentium III/600 МГц), а для Gigabit Ethernet — на базе AMD Athlon/700 МГц (4 однопроцессорных узла, материнские платы Gigabyte GA-7VX, сетевые платы Intel Pro1000 T) — данные соответствующих тестов netperf для Fast Ethernet опубликованы в журнале «Открытые системы», 2001, № 7-8.
Пропускная способность TCP_STREAM для Gigabit Ethernet на 32-разрядной шине PCI оказалась не очень высокой, порядка 300 Мбит/с. Учитывая известные данные о больших задержках Gigabit Ethernet (они согласуются с результатами измерений на тестах netperf), и высокую стоимость таких сетевых плат и коммутаторов по критерию цена/производительность, применение подобных решений целесообразно ограничить распараллеливанием приложений, характеризующихся обменом длинными сообщениями.
Все представленные на семинаре кластеры используют процессоры Intel. Лишь в ЦКОХИ РАН применяются еще и AMD Athlon. Кроме того, в узлах обычно используются скорее ПК, чем специализированные серверные решения. Исключение составил ННГУ, где используются 4-процессорные серверы. В ЦКОХИ сейчас развертываются узлы на базе двухпроцессорных серверных плат компании Tyan c Athlon XP 1800+ и Intel Tualatin/1,26 ГГц, что вдвое увеличит пиковую производительность кластеров.
Вместе с тем, из представленных сообщений было видно, что некоторые организации только начинают работать с кластерными технологиями. В частности, иногда при ориентации кластера на распараллеливание вместо коммутатора пытались использовать концентратор.
В области программного обеспечения в первую очередь следует отметить выполненную в Институте прикладной математики РАН (Москва) работу, о которой доложил В.А. Крюков. В ней рассказывалось о новой разработке средств распараллеливания, DVM, которая, подобно OpenMP, основана на системе комментариев в исходном тексте программы, служащих подсказками для средств распараллеливания. Однако в отличие от OpenMP, DVM позволяет программисту более детально управлять особенностями распараллеливания, объединяя параллелизм по данным и управлению, что потенциально повышает эффективность распараллеливания. Существует реализация DVM для языков Фортран-77 и Си; фактически на нижнем уровне генерируются обращения к MPI. Автор доклада, сопоставив «потребительские свойства» OpenMP, DVM, MPI, HPF-2 и комбинации OpenMP + MPI, пришел к неутешительному выводу, что идеальных средств распараллеливания на сегодняшний день не существует. Это уже вторая (после mpC) крупная разработка средств распараллеливания, выполненная в нашей стране.
Целый ряд докладов был посвящен распараллеливанию задач газовой и гидродинамики. В частности, об этом рассказывали представители легендарного ВНИИ экспериментальной физики (г. Саров). В качестве общих тенденций в этой области, как кажется, выявилось применение явных разностных схем и нерегулярных сеток.
Еще одна часть докладов была посвящена сопоставлению инструментальных средств, используемых в кластерах. Здесь выделялась группа выполненных в ННГУ (проф. В.П. Гергель и др.) работ по выбору системы управления пакетными очередями для кластера (лучшей найдена PBS) и по сопоставлению распараллеливания тестов Linpack на платформах RedHat Linux 7.0 и Windows 2000. Фактически же дело свелось, главным образом, к определению наиболее эффективных компиляторов, и, возможно, распараллеленных библиотек BLAS — из числа доступных авторам исследования.
Выбор в ННГУ произошел в пользу Windows 2000 (по всей видимости, это единственный такой кластер — все остальные участники говорили о ОС Linux). Сопоставление Си-компиляторов, производившееся, в частности, на задаче матричного умножения для Pentium 4, дало естественный результат: лучший — Intel C++ 5.0, затем Microsoft Visual C++ 6.0, а далее Borland C++ 5.5. Интересным оказалось и сопоставление различных версий MPI для Windows и Linux. В качестве параллельной реализации BLAS для Windows 2000 в ННГУ была выбрана библиотека PLAPACK, в которой применяются обращения к MPI и библиотеке Intel MKL.
Несколько сообщений было посвящено распараллеливанию задач при работе с графами, например, распараллеливанию обхода дерева поиска при решении задачи о рюкзаке (Н.Е. Тимошевская, Тюменский госуниверситет).
Уровень представленных на семинаре сообщений варьировался в очень широких пределах — от серьезных исследований, выполненных большими коллективами, до студенческих работ. Активно обсуждалась на семинаре и сама проблема подготовки специалистов, разбирающихся в кластерных технологиях и распараллеливании. Пожалуй, наибольшим сюрпризом стала активность, которую проявляет Intel в данной области. Компания проявляет сегодня особый динамизм, осваивая новые рынки и технологии, например, телекоммуникации и различные области применения ОС Linux. Можно предположить, что в области распараллеливания одной из серьезных причин такого интереса является ориентация Intel на применение в своих процессорах технологии hyper-threading, позволяющей одному физическому процессору выглядеть как два логических, создавая у программиста иллюзию двухпроцессорной SMP-cистемы. Идея здесь состоит в том, чтобы дешевым способом, путем минимальных дополнений микроархитектуры добиться более полного использования «простаивающих» ресурсов микропроцессоров, разрешив им выполнять сразу две нити различных задач.
Факт, что распараллеливанием активно занимаются в нижегородской лаборатории Intel (INNL), весьма интересен сам по себе. Деятельность такой лаборатории в России — явление уникальное. Представление о том, над чем в ней работают, можно было получить, в частности, из анализа сообщений на семинаре и на конференциях «Графикон», в ходе дискуссий с докладчиками из INNL и из других сообщений представителей Intel.
Круглый стол
Тематика круглого стола, прошедшего по завершению семинара, как это часто бывает, выглядела несколько хаотичной. Я бы выделил две темы. Во-первых, подготовка кадров для работы в области распараллеливания. Во-вторых, проблемы использования кластеров. К сожалению, многие организации, разворачивающие кластеры, еще, вероятно, находятся на начальной стадии эйфории от открывающихся возможностей. В кулуарах же активно обсуждались некоторые реальные проблемы построения и эксплуатации Linux-кластеров. Имеются, например, ограничения диспетчирования при использовании систем пакетных очередей. Обнаружены проблемы при работе с популярной системой OpenPBS на больших кластерах. А сотрудники НИВЦ МГУ вообще пошли на разработку собственной системы пакетных очередей. Большие трудности и с компиляторами для Linux.
Складывается впечатление, что большинство кластеров пока не эксплуатируются в «промышленном режиме» в режиме 7 х 24 х 365 и с полной загрузкой.
«Компьютерное зрение» от Intel
В декабре нижегородский центр разработки программного обеспечения Intel объявил о выпуске корпорацией пакета исходных кодов программ для реализации стереоскопического компьютерного «зрения», вошедших в библиотеку Open Source Computer Vision Library. Библиотека представляет собой инструментарий, насчитывающий более 500 функций обработки и анализа изображений для создания приложений компьютерного «зрения», в том числе средств взаимодействия человека с компьютером. Новые программы позволяют с помощью двух компьютерных видеокамер получать не только изображение, но и данные о глубине объектов. Это необходимо для решения таких задач, как распознавание жестов, слежение за объектами и распознавание лиц. Выпущенный пакет программ включает в себя дополнительный интерфейс, позволяющий импортировать функции библиотеки в программный пакет для исследований и быстрой разработки прототипов программ Matlab. Библиотека включает исходные коды на языке Си для всех содержащихся в ней функций и лицензию, разрешающую дальнейшее бесплатное распространение программ.
Исследования Intel в России
История лаборатории Intel в Нижнем Новгороде восходит к контракту компании с РФЯЦ — ВНИИЭФ и деятельности Нижегородской лаборатории программных технологий (NTSTLab), созданной еще в 1995 году и работающей по контрактам с крупными западными фирмами. Собственно, кадровую основу INNL первоначально и составили специалисты NTSTLab, часть тематики которой естественным образом «перекочевала» в INNL. Например, в трудах конференции «Графикон-99» я обнаружил доклад специалистов NTSTLab, посвященный моделированию деформируемых поверхностей в игровых и анимационных приложениях. Там, в частности, решались задачи анимации водной поверхности. Плоды этой деятельности можно увидеть теперь в демонстрационном ролике Intel, предлагаемом для иллюстрации возможностей оптимизации в компиляторах Фортран/Cи 5.0 и библиотеки времени выполнения. Включение соответствующих ключей оптимизации (например, генерации SSE2-содержащих коды для Pentium 4) позволяет воочию увидеть, как меняется при этом скорость построения анимационного представления.
Другой пример — распознавание лица человека. Об этих работах представители NTSTLab докладывали еще в 1999 году, а в 2001-м на конференции «Графикон?2001» был представлен доклад INNL о трехмерной анимации лиц, совместимой с MPEG-4. Кстати, на этой же конференции прозвучал и другой доклад сотрудников INNL, также посвященный реализации MPEG-4, что может говорить о стратегическом интересе лаборатории к MPEG-4. В частности, реализация MPEG-4 для Pentium 4 выполнена в INNL.
На семинаре по параллельным технологиям Intel представила два доклада — «Параллельные вычисления в многослойных динамических системах» и «Распараллеливание вычислений трансцендентных функций». Последнее сообщение относится к распараллеливанию на уровне команд, обеспечиваемому суперскалярными архитектурами микропроцессоров. Эта работа нацелена на более эффективную реализацию трансцендентных функций в библиотеке времени выполнения (в смысле уменьшения числа требуемых для расчета тактов). Еще большего уменьшения числа тактов разработчики сумели добиться при реализации так называемых векторных функций. Скажем, если экспонента подсчитывается в цикле с шагом, то компилятор распознает, что фактически аргумент экспоненты — вектор, и генерирует обращение к «векторной» версии экспоненты. «Векторизовано» также и деление. При расчете экспоненты достигается ускорение в несколько раз (на Itanium требуется всего 6 тактов).
Из других примеров работ INNL можно указать на свободно распространяемое программное обеспечение OpenCV - полезную при работе с изображениями библиотеку для работы с матрицами небольшой размерности, MKL, а также на IPP-библиотеку, используемую при обработке сигналов, работе с быстрым преобразованием Фурье и в мультимедийных приложениях.
Следует также отметить кроссплатформный подход, характерный для программных продуктов Intel. Например, компиляторы создаются и для x86, и для IA-64, и для StrongARM, различаясь лишь генератором кодов. IPP-библиотеки делаются для IA, Xscale и т.д.
Во время экскурсии в INNL, организованной для участников семинара, ее директор Алексей Одиноков сформулировал основные направления работы лаборатории.
- Extended PC Architecture (ПК как центр поддержки массы других цифровых устройств — телефонов и т.п.); сюда же относятся и работы над IPP-библотеками.
- Коммуникации (программные модемы, беспроводные телекоммуникации и т.п.) — об этом говорил во время своего визита в Москву директор лаборатории Intel Microprocessor Research Lab Джастин Раттнер. В области беспроводных коммуникаций одна из основных задач — создание «строительных блоков», в частности, реализация стека протоколов для общения между собой любых аппаратных платформ, базирующихся на технологиях Intel.
- Человеко-машинные интерфейсы (трехмерная графика, MPEG-4, распознавание речи и др.).
- Средства повышения производительности (например, VTune).
- Компиляторы для различных микропроцессоров от Intel.
Этим тематикам отвечает и сама структура подразделений INNL. Еще одно подразделение занимается тестированием готовых программных продуктов, разработанных в том числе и в других лабораториях Intel за пределами России. Работа INNL протекает в тесной кооперации с другими лабораториями Intel. Часть сотрудников, работающих над некоторой задачей, может принимать участие в деятельности одной лаборатории, а другая часть — в другой, расположенной в другой стране. Так, работы в области распараллеливания проходят совместно с Иллинойской лабораторией (США), работы над компиляторами — с группой инженеров из Compaq, недавно перешедших в Intel. По всему миру распределены работы над VTune, в частности, они ведутся в Санта-Кларе (США), Хайфе (Израиль) и в INNL.
Весьма высокие требования предъявляются к надежности инфраструктуры лаборатории, например, предусмотрено аппаратное дублирование серверов, независимо от того, расположены ли они физически в России или за рубежом. Хотя платформа Windows NT используется чаще, но весьма активно в лаборатории применяется и ОС Linux.
В свое время нас всех учили, что «кадры решают все». Основу кадрового состава NTSTLab определяли специалисты ВНИИЭФ, а одним из руководителей NTSTLab была нынешний директор INNL по стратегии и технологии Людмила Нестеренко. Сегодня состав INNL пополняется главным образом за счет выпускников и аспирантов ННГУ. Широко практикуются и такие формы, как целевая магистратура и аспирантура на базе университета. В числе читаемых в ННГУ спецкурсов появляются новые дисциплины: цифровые коммуникации, программирование в Unix, язык программирования Perl, промышленное программирование и др. — INNL активно участвует в обновлении учебных программ. В INNL работают также выпускники Нижегородского политехнического института и бывшие сотрудники институтов РАН, а также выпускники столичных вузов (МГТУ им. Баумана, МИФИ, МГУ и др.). И все же основная кузница кадров для INNL — ННГУ. Коллектив лаборатории молодой и здесь даже считают, что не помешало бы увеличить долю программистов среднего и старшего поколения.
Как и в любой серьезной компании, в INNL применяются собственные корпоративные стандарты на всем периоде жизни программного продукта — от разработки спецификаций до тестирования. Молодежь, приходя в INNL, еще не имеет навыков корпоративной культуры, а вот для программистов старшего поколения, скажем, жесткие требования к технологии программирования могут вызывать проблемы. Однако благодаря тому, что во ВНИИЭФ всегда практиковались корпоративные требования, для пришедших в INNL из этого института адаптация проходит безболезненно. На начальных этапах проблемы возникали скорее из стремления к «вольнице» у программистов, пришедших из академических институтов.
Кроме основного помещения INNL имеет еще офис на территории ННГУ. На «основной территории», где побывали участники семинара, программисты работают в больших залах площадью порядка 100 кв. м, разделенных на отдельные «комнатки» перегородками высотой чуть ниже человеческого роста. Хозяева объяснили, что это не создает проблем шума, а когда в обсуждение вовлекается сразу несколько человек, они уходят в специальные помещения для дискуссий. Неожиданностью для меня стал и режим работы INNL: хотя мы приехали в лабораторию уже вечером, явно после конца рабочего дня, многие сотрудники по-прежнему находились на местах. Было видно, что в INNL во главе угла ставят суть работы, а не формальности. Вместе с тем модные ныне на Западе тенденции к работе на дому в INNL отражения не получили. Отдельного разговора заслуживают и то внимание, которым в INNL окружают молодых сотрудников. Жаль, что такая прекрасная лаборатория открыта в Нижнем Новгороде, а не в Москве. Нестеренко, во многом благодаря стараниям которой и бьет ключом жизнь не только в INNL, но и в той части университета, которая в той или иной степени связана с INNL, говорит, что руководство INNL поставило перед собой цель создать исследовательский центр мирового класса. Если сейчас в INNL трудятся более 130 сотрудников, не считая контракторов, то в ближайшие несколько лет есть желание довести штат до 500 человек. В связи с этим Intel в Нижнем Новгороде активно набирает новых специалистов причем не только из данного региона, но и из других научных центров России и ближнего зарубежья.