Физики не шутят

9 июль, 2007 - 14:50Андрей Зубинский

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

Мы настолько «заболтали» разнообразные отвечающие за описание масштаба проекта или явления слова, что приходится, не откладывая в долгий ящик, начинать именно с пояснения... масштабов. Хотя бы потому, что за скромным словом «большой» в названии «большой адронный коллайдер» (LHC, Large Hadron Collider) кроется по-настоящему грандиозный масштаб.

Физики не шутят
Так выглядит скрытая сторона commodity computing

Попробуйте представить себе подземный кольцевой тоннель с бетонированными стенками протяженностью 27 км (диаметр кольца – чуть больше 8 км), кольцо которого лежит в плоскости, расположенной под углом к уровню моря так, что точка тоннеля с минимальной глубиной находится на 50 м под землей, а с максимальной – на 175 м, причем строители этого инженерного сооружения продемонстрировали точность работ менее 1 см. Практически по всей длине тоннеля (его внутренний диаметр немногим меньше 4 м) расположены 1232 сверхпроводящих электромагнита (каждый длиной 14,3 м и массой 35 тонн), для охлаждения которых до рабочей температуры –271 °C используются 12 миллионов литров жидкого гелия и система его подачи к ваннам, где «купаются» электромагниты, гарантирующая изменение температуры жидкого гелия на километровом участке транспортировки не более чем на 26 °C. Каждый электромагнит, обмотки которого выполнены из армированных медью ниобиево-титановых кабелей (к слову, суммарная длина сверхпроводящего кабеля всего проекта LHC почти в семь раз больше длины экватора Земли), для получения нужной магнитной индукции требует, ни много ни мало, – пиковой силы тока 15 тысяч ампер. Сквозь магниты по всей длине тоннеля проходят две трубы с внутренним диаметром всего 5 см, в которых поддерживается глубокий вакуум с концентрацией молекул, примерно соответствующей высоте 1000 км над Землей. Кроме 1232 разгонных сверхпроводящих электромагнитов, в конструкции коллайдера используются еще почти полторы тысячи разнообразных создающих магнитное поле устройств – для точной фокусировки и коррекции характеристик движения потоков разгоняемых в вакууме частиц. Добавьте к этим сведениям изобилие «низкоуровневой» автоматики – каждый магнит, каждый узел системы подачи жидкого азота, каждое устройство в цепях питания требуют сложных локальных алгоритмов управления. Так, для обеспечения работоспособности одного электромагнита используется система управления, следящая в реальном времени за четырьмя тысячами параметров и генерирующая несколько сотен управляющих воздействий. И наконец, крупногабаритные узлы коллайдера – так называемые «эксперименты», сложнейшие устройства наблюдения короткоживущих процессов, происходящих с частотой порядка 40 MHz (примерно с такой частотой будут сталкиваться в камерах каждого эксперимента после многочасового разгона пучки частиц). Основных экспериментов в рамках проекта LHC – четыре, и для каждого из них создан уникальный комплект оборудования, предназначенного для изучения результатов столкновения частиц (протонов и ядер свинца). Несмотря на то что в рамках каждого эксперимента пучки частиц сводятся прецизионным позиционирующим оборудованием в область диаметром около нескольких десятков микрон, оборудование экспериментов (как завершенные технические узлы) по-настоящему огромно – это устройства с диаметром в несколько десятков метров. Кстати, энергия сталкивающихся пучков частиц в LHC действительно колоссальна, что прибавляет к возможным источникам повышенной опасности (система подачи жидкого гелия, характеризующегося сверхтекучестью, чудовищная сила тока в электросети, вакуумная подсистема) еще и высокую радиоактивность. Для обеспечения безопасности персонала, возможности эвакуации и доставки экстренных служб в рамках проекта создано свыше 40 км дополнительных тоннелей. Суммарное энергопотребление всей этой грандиозной машины (несмотря на габариты и астрономическую сложность коллайдер действительно представляет собой машину, имеющую четкое назначение) описывается совершенно нереальной цифрой силы тока – 17 миллионов ампер.

Теперь, когда с масштабами мы определились, давайте скажем о главном. О том, что же производит машина «большой адронный коллайдер», машина, которая не поместилась в одной стране (Швейцарии) и частично «заехала» на территорию другой (Франции), проект создания которой оценивается в почти три с половиной миллиарда швейцарских франков. Потому что если все сказанное выше для аудитории нашего журнала просто интересно (или даже забавно), то основной продукт LHC непосредственно касается всех нас. Ведь машина LHC производит «грязную» информацию – колоссальные объемы данных, из которых впоследствии надо выбирать драгоценные крупицы. LHC можно смело называть одним из самых больших генераторов информации, по сравнению с которым меркнут даже самые знаменитые масштабные информационные проекты, такие как, например, полностью компьютеризированный цикл разработки самолетов, используемый знаменитой Boeing. Впрочем, информационные масштабы заслуживают отдельного обсуждения.

LHC как генератор информации

В мае этого года четыре команды IT-поддержки одного из четырех главных экспериментов LHC (кодовое название ALICE – детектор тяжелых ионов) провели тестовую 18-дневную эксплуатацию своих подсистем «утилизации продукции» LHC. К слову, набор этих подсистем весьма традиционен для масштабных систем обработки информации реального времени – подсистема сбора данных (иными словами – преобразования аналоговых данных от многочисленных датчиков в цифровую форму), подсистема обмена информацией (сетевая подсистема), подсистема накопления данных и, наконец, расчетная подсистема, обеспечивающая «фильтрацию грязной информации» и выделение из нее описаний событий, интересующих ученых. Казалось бы, ничего особенного в этом списке нет. Кроме, конечно, масштабов – 18 суток все системы работали при интенсивности цифровых потоков порядка 1 гигабайта в секунду, и объемы накопленной информации составили 1 петабайт (1015 байт). И, заметьте, речь идет только об одном эксперименте (а их всего четыре!). Получается, что в масштабах всего LHC скорость генерирования информации на уровне 1 гигабайта в секунду – это далеко не предел. А проектная продолжительность эксплуатации всей машины такого класса, как суперколлайдер, ни много ни мало, – 20–25 лет. При этом простои в столь дорогостоящем проекте, естественно, недопустимы, т. е. за проектное время работы LHC один эксперимент должен сгенерировать десятки тысяч петабайтов информации. И это «сырой», «грязной» информации, постобработка которой требует колоссального машинного времени и производительности, а ее пока даже теоретически невозможно сконцентрировать территориально в одном месте. Именно поэтому в рамках проекта LHC и ставятся как будто далекие от нужд теоретических физиков мировые рекорды передачи данных (в 2003 г. команды LHC и Калифорнийского технологического института, отдаленные на 7 тыс. км, обменялись 1,1 терабайтом данных за 30 мин), и создается программное обеспечение системного, а не прикладного уровня.

За границей гига- и петабайта

Физики не шутят
Один PC – персональный компьютер, много PC – научный инструмент

Вычислительные системы, призванные обеспечить работу ученых с данными, объемы которых превосходят традиционные для иных прикладных областей границы гигабайтовых скоростей поступления информации и петабайтовых ее объемов, вовсе не являются чем-то сногсшибательным. Здесь удивительны разве что масштабы и... умение ученых считать каждый затраченный цент. Практически вся вычислительная инфраструктура LHC относится к классу commodity computing, т. е. систем, построенных из, грубо говоря, «ширпотреба». Впрочем, давайте для начала ознакомимся с требованиями, предъявляемыми физиками (если быть точным, то физиками, специализирующимися в области высоких энергий) к вычислительной технике.

Сразу следует оговориться, физика, как и многие области науки (да и, по большому счету, бизнеса), – весьма консервативна в отношении программного обеспечения. Здесь часто используются проверенные временем пакеты прикладных программ (именно «пакеты», предназначенные для эксплуатации в неинтерактивном, пакетном режиме), давным-давно написанные, например на Fortran, а также сложные интерактивные программные комплексы, разработка которых продолжается по сей день. И между тем, общее у этих двух классов программ есть – их создание начиналось тогда, когда о массово доступных, «ширпотребных» параллельных вычислителях разве что можно было грезить. В большинстве этих программ параллелизм даже на уровне машинного кода крайне невысок, что означает, в первую очередь, невысокий прирост эффективности за счет попыток «наивного распараллеливания» с помощью оптимизирующих компиляторов, способных генерировать код, использующий расширенные аппаратно-программные возможности современных процессоров (например, векторные расширения систем команд типа SSE). При этом характер применения физического ПО, особенно моделирующих программных комплексов (систем имитационного моделирования и моделирования на основе метода Монте-Карло), весьма специфичен – чем больше пакетных заданий отработает в единицу времени, тем лучше. Это связано со спецификой задач постобработки накопленных в результате экспериментов данных – они используются как «конфигурационные данные» для имитационных задач, решение которых позволяет выявить нетривиальные, интересные ученым события. В таком случае настоящий взрывной прирост производительности дает использование симметричных мультипроцессорных машин и их современного варианта – машин с многоядерными процессорами. Ведь именно на этих машинах можно «раздать» отдельным процессорам или процессорным ядрам параллельное исполнение моделирующего пакета с разными наборами конфигурирующих данных и добиться почти идеального соблюдения правила «суммарная производительность = производительность одного CPU × число CPU». К слову, «почти идеальное» здесь мы употребили не для красного словца – задачи из области физики высоких энергий обычно весьма нечувствительны к самому слабому месту SMP-архитектур – бутылочному горлышку шины памяти. Причина тому – невысокая требовательность задач к размерам эффективно используемой в многоядерных процессорах кэш-памяти: для большинства современных массовых многоядерных CPU при исполнении задач этого класса обращения за пределы кэш-памяти составляют менее 1% всех операций с памятью данных и программ. Все эти утверждения получили наглядное и подкрепленное аппаратно-программными механизмами оценки производительности ОС Linux (пакет perfmon2) доказательство во время тестовых испытаний IT-специалистами проекта LHC нового четырехъядерного процессора Intel Xeon. Результирующее быстродействие тестируемой системы в несинтетическом тесте (пакет ROOT, созданный в CERN, Европейской организации ядерных исследований, и относящийся к неоклассическому научному ПО – уже не из Fortran-эпохи, но еще не из современности дешевых массовых параллельных вычислений) полностью подтвердило главный постулат – если вы располагаете представляющими ценность приложениями с очень низкой степенью параллелизма и не располагаете временем (и/или средствами), позволяющим распараллелить код, – N-ядерный процессор сможет обеспечить практически N-кратный прирост производительности в том случае, если решаемые задачи допускают параллельное независимое исполнение модулей в пакетном режиме.

Итак, теперь, после знакомства со спецификой решаемых задач – commodity computing в версии проекта LHC. Само собой, границы «ширпотребности» здесь обрываются на подсистеме сбора данных – это область полузаказной и заказной аппаратуры, зачастую уникальной. Но как только начинается цифра – начинается и «ширпотреб». В рамках проекта LHC (и ряда других проектов CERN) это и многочисленные длинные многоярусные стойки с... обычными ПК, в самых что ни на есть «офисных» корпусах, и шкафы с blade-серверами.

Образцовый пример мощной завершенной системы на основе идеологии commodity computing – opencluster, аппаратно-программный комплекс лаборатории grid-вычислений CERN Openlab, работающей в том числе и в интересах проекта LHC. 99 серверов Hewlett-Packard с процессорами Intel Itanium (98 двухпроцессорных и один восьмипроцессорный), сетевая подсистема, образованная серийной 10 GBps техникой Enterasys, формируют мощный вычислительный кластер, используемый для разработки и испытаний программного обеспечения grid-вычислений.

Адаптация ПО с низким параллелизмом к возможностям многоядерных процессоров

Опыт, накопленный программистами LHC и CERN, представляет самостоятельную ценность. Тем более что полученные результаты вполне обозримы, и любой программист может их воспринимать как руководство к действию.

  1. Оптимизируйте циклы. Современные компиляторы и процессоры с расширенной системой команд (речь идет о векторных расширениях) раскрывают все свои возможности при трансляции «коротких» циклов с невысокой вложенностью операций.
  2. Минимизируйте сложные вложенные конструкции ветвлений. Важные механизмы процессоров (предсказания ветвлений и исполнения с изменением последовательности команд) при повышении числа вложений операций ветвления потока исполнения (if-then-else и case) ощутимо снижают эффективность.
  3. Где возможно, заменяйте библиотечные расчеты математических функций более быстрыми эквивалентами (например, табличной аппроксимацией).
  4. Используйте развитые механизмы профилирования кода, в первую очередь тонкие программно-аппаратные (perfmon2).
  5. Применяйте развитые технологические средства, позволяющие с относительно невысокими затратами адаптировать существующий код к возможностям многоядерных архитектур. Прежде всего речь идет о «щадящем» распараллеливании кода без его модификации, только с помощью директив компилятора, поддерживающего интерфейс OpenMP, и о сопутствующем инструментарии, существенно облегчающем выявление допустимых к распараллеливанию блоков кода, в первую очередь – Intel Treading Tools.