Распараллеливание на различных уровнях иерархии архитектуры компьютерных систем стало реальностью. «В самом низу» — это параллелизм на уровне команд, на уровне микропроцессора. «В самом верху» — распараллеливание между компьютерами в кластере. Второму подходу был посвящен Международный научно-практический семинар «Высокопроизводительные параллельные вычисления на кластерных системах», состоявшийся на базе Нижегородского государственного университета.
Проректор ННГУ Р. Г. Стронгин рассказывает об успехах своего Университета

Поддержку семинару оказали компания 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, организованной для участников семинара, ее директор Алексей Одиноков сформулировал основные направления работы лаборатории.

  1. Extended PC Architecture (ПК как центр поддержки массы других цифровых устройств — телефонов и т.п.); сюда же относятся и работы над IPP-библотеками.
  2. Коммуникации (программные модемы, беспроводные телекоммуникации и т.п.) — об этом говорил во время своего визита в Москву директор лаборатории Intel Microprocessor Research Lab Джастин Раттнер. В области беспроводных коммуникаций одна из основных задач — создание «строительных блоков», в частности, реализация стека протоколов для общения между собой любых аппаратных платформ, базирующихся на технологиях Intel.
  3. Человеко-машинные интерфейсы (трехмерная графика, MPEG-4, распознавание речи и др.).
  4. Средства повышения производительности (например, VTune).
  5. Компиляторы для различных микропроцессоров от 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 в Нижнем Новгороде активно набирает новых специалистов причем не только из данного региона, но и из других научных центров России и ближнего зарубежья.