Обзоры Обзоры 14.05.2002 в 21:00 comment

Интерфейсы межузлового взаимодействия в кластерах

author avatar

ITC.UAСтажер

Репутація Наднизька


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


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


Рис. 1. Высокоскоростной кластер

Почти в любой, ориентированной на параллельное вычисление, задаче невозможно избежать
необходимости передавать данные от одной подзадачи к другой. Таким образом, производительность
кластерной системы определяется быстродействием как узлов, так и связей между
ними. Причем влияние скоростных параметров последних на общую производительность
системы зависит от характера выполняемой задачи. Если она требует частого обмена
данными с подзадачами, тогда быстродействию коммуникационного интерфейса следует
уделять максимум внимания. Естественно, чем меньше взаимодействуют части параллельной
задачи между собою, тем меньше времени потребуется для ее выполнения. Все это
диктует определенные требования также и к программированию параллельных задач.
Следует помнить, что скорость передачи данных между центральным процессором и
оперативной памятью узла значительно превышает соответствующие характеристики
систем межкомпьютерного взаимодействия. А это изменяет функционирование кластера
по сравнению с SMP-системами.

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


Рис. 2. Скорость передачи непрерывного
потока данных

Рис. 3. Время передачи пакета
нулевой длины

Наиболее популярными сегодня коммуникационными технологиями для построения кластерных
архитектур являются Myrinet, Virtual Interface Architecture (cLAN компании Giganet
— одна из первых коммерческих аппаратных реализаций), SCI (Scalable Coherent
Interface), QsNet (компании Quadrics Supercomputers World), Memory Channel (разработка
Compaq и Encore), а также хорошо всем известные Fast Ethernet и Gigabit Ethernet.

Приведенные на рис. 2 и 3 диаграммы дают возможность сравнить быстродействие аппаратных реализаций разных технологий, но следует помнить, что на реальных задачах и на разнообразных аппаратных платформах параметры задержки и скорости передачи данных получаются на 20—40% (а иногда и больше) хуже от максимально возможных. Например, при использовании библиотек MPI для коммуникационных карт cLAN и Intel-базированных серверов с шиной PCI реальная пропускная способность канала составляет 80—100 MBps, задержка — около 20 мкс.

Одной из проблем, которая возникает при использовании скоростных интерфейсов, является то, что архитектура PCI не оптимизирована для работы с высокоскоростными устройствами такого типа. Но если перепроектировать PCI Bridge с ориентацией передачи данных одному адресату, то эта проблема решается. Такие реализации имеют место в продуктах некоторых производителей, например компании Sun Microsystems.

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

Сравнение
высокоскоростных коммуникационных интерфейсов

Одной интересной особенностью коммуникационных интерфейсов, которые обеспечивают
низкие задержки и поддерживают протоколы когерентности кэш-памяти, является то,
что на их основе можно строить вычислительные комплексы с архитектурой NUMA, а
также системы, которые на уровне ПО могут эмулировать многопроцессорные SMP-системы.
Это позволяет выполнять на них программы, ориентированные на использование в SMP-решениях.
Но в связи с тем, что в кластерах задержка межпроцессорного взаимодействия в несколько
раз выше по сравнению с SMP-системами, среда выполнения программ, т. е. ОС или
СУБД, должна быть написана с учетом этой особенности.

Остановимся вкратце на средствах распараллеливания задач. Здесь существует несколько
разных подходов к программированию параллельных вычислений. Это использование:

  • широко распространенных стандартных языков программирования и коммуникационных библиотек и интерфейсов для организации межпроцессорного взаимодействия (PVM, MPI, HPVM, MPL, OpenMP, ShMem);
  • специализированных языков параллельного программирования и параллельных
    расширений (параллельные реализации Fortran, C/C++, ADA, Modula-3);
  • средств автоматического и полуавтоматического распараллеливания последовательных программ (BERT 77, FORGE, KAP, PIPS, VAST);
  • стандартных языков и параллельных процедур из специализированных библиотек,
    которые ориентированы на решение задач в конкретных областях, например линейной
    алгебры, методов Монте-Карло, генетических алгоритмов, обработки изображений,
    молекулярной химии и т. п. (ATLAS, DOUG, GALOPPS, NAMD, ScaLAPACK).

По опыту пользователей высокоскоростных кластерных систем, наиболее эффективно
работают программы, оптимизированные относительно межпроцессорного взаимодействия.
И даже несмотря на то что программировать с помощью пакетов, которые используют
интерфейс разделяемой памяти (shared memory interface) или средства автоматического
распараллеливания, значительно удобней, больше всего распространены сегодня библиотеки
MPI и PVM.


Що думаєте про цю статтю?
Голосів:
Файно є
Файно є
Йой, най буде!
Йой, най буде!
Трясця!
Трясця!
Ну такої...
Ну такої...
Бісить, аж тіпає!
Бісить, аж тіпає!
Loading comments...

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: