Опубликован: 28.07.2007 | Доступ: свободный | Студентов: 2030 / 506 | Оценка: 4.53 / 4.26 | Длительность: 25:10:00
ISBN: 978-5-9556-0096-3
Специальности: Программист
Лекция 1:

Принципы построения параллельных вычислительных систем

1.4. Характеристика типовых схем коммуникации в многопроцессорных вычислительных системах

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

1.4.1. Примеры топологий сети передачи данных

Структура линий коммутации между процессорами вычислительной системы ( топология сети передачи данных ) определяется, как правило, с учетом возможностей эффективной технической реализации. Немаловажную роль при выборе структуры сети играет и анализ интенсивности информационных потоков при параллельном решении наиболее распространенных вычислительных задач. К числу типовых топологий обычно относят следующие схемы коммуникации процессоров (см. рис. 1.7):

  • полный граф ( completely-connected graph или clique ) – система, в которой между любой парой процессоров существует прямая линия связи. Такая топология обеспечивает минимальные затраты при передаче данных, однако является сложно реализуемой при большом количестве процессоров;
  • линейка ( linear array или farm ) – система, в которой все процессоры перенумерованы по порядку и каждый процессор, кроме первого и последнего, имеет линии связи только с двумя соседними (с предыдущим и последующим) процессорами. Такая схема является, с одной стороны, просто реализуемой, c другой стороны, соответствует структуре передачи данных при решении многих вычислительных задач (например, при организации конвейерных вычислений);
  • кольцо ( ring ) – данная топология получается из линейки процессоров соединением первого и последнего процессоров линейки;
  • звезда ( star ) – система, в которой все процессоры имеют линии связи с некоторым управляющим процессором. Данная топология является эффективной, например, при организации централизованных схем параллельных вычислений;
  • решетка ( mesh ) – система, в которой граф линий связи образует прямоугольную сетку (обычно двух- или трехмерную). Подобная топология может быть достаточно просто реализована и, кроме того, эффективно использована при параллельном выполнении многих численных алгоритмов (например, при реализации методов анализа математических моделей, описываемых дифференциальными уравнениями в частных производных);
  • гиперкуб ( hypercube ) – данная топология представляет собой частный случай структуры решетки, когда по каждой размерности сетки имеется только два процессора (т.е. гиперкуб содержит 2N процессоров при размерности N ). Такой вариант организации сети передачи данных достаточно широко распространен на практике и характеризуется следующим рядом отличительных признаков:
Примеры топологий многопроцессорных вычислительных систем

Рис. 1.7. Примеры топологий многопроцессорных вычислительных систем

- два процессора имеют соединение, если двоичные представления их номеров имеют только одну различающуюся позицию;

- в N -мерном гиперкубе каждый процессор связан ровно с N соседями;

- N -мерный гиперкуб может быть разделен на два ( N–1 )-мерных гиперкуба (всего возможно N различных таких разбиений);

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

Дополнительная информация по топологиям многопроцессорных вычислительных систем может быть получена, например, в [2, 11, 24, 28, 45, 59, 76]. При рассмотрении вопроса следует учесть, что схема линий передачи данных может реализовываться на аппаратном уровне, а может быть обеспечена на основе имеющейся физической топологии при помощи соответствующего программного обеспечения. Введение виртуальных (программно-реализуемых) топологий способствует мобильности разрабатываемых параллельных программ и снижает затраты на программирование.

1.4.2. Топология сети вычислительных кластеров

Для построения кластерной системы во многих случаях используют коммутатор ( switch ), через который процессоры кластера соединяются между собой. В этом случае топология сети кластера представляет собой полный граф (рис. 1.7), в соответствии с которым передача данных может быть организована между любыми двумя процессорами сети. При этом, однако, одновременность выполнения нескольких коммуникационных операций является ограниченной – в любой момент времени каждый процессор может принимать участие только в одной операции приема-передачи данных. Как результат, параллельно могут выполняться только те коммуникационные операции, в которых взаимодействующие пары процессоров не пересекаются между собой.

1.4.3. Характеристики топологии сети

В качестве основных характеристик топологии сети передачи данных наиболее широко используется следующий ряд показателей:

  • диаметр – показатель, определяемый как максимальное расстояние между двумя процессорами сети (под расстоянием обычно понимается величина кратчайшего пути между процессорами). Эта величина может характеризовать максимально необходимое время для передачи данных между процессорами, поскольку время передачи обычно прямо пропорционально длине пути;
  • связность ( connectivity ) – показатель, характеризующий наличие разных маршрутов передачи данных между процессорами сети. Конкретный вид данного показателя может быть определен, например, как минимальное количество дуг, которое надо удалить для разделения сети передачи данных на две несвязные области;
  • ширина бинарного деления ( bisection width ) – показатель, определяемый как минимальное количество дуг, которое надо удалить для разделения сети передачи данных на две несвязные области одинакового размера;
  • стоимость – показатель, который может быть определен, например, как общее количество линий передачи данных в многопроцессорной вычислительной системе.

Для сравнения в таблице 1.1 приводятся значения перечисленных показателей для различных топологий сети передачи данных.

Таблица 1.1. Характеристики топологий сети передачи данных (p – количество процессоров)
Топология Диаметр Ширина Связность бисекции Стоимость
Полный граф 1 p2/4 p–1 p(p–1)/2
Звезда 2 1 1 p–1
Полное двоичное дерево 2log((p+1)/2) 1 1 p–1
Линейка p–1 1 1 p–1
Кольцо \lfloor p/2\rfloor 2 2 p
Решетка N=2 2(\sqrt{p} -1) \sqrt{p} 2 2(p - \sqrt{p})
Решетка-тор N=2 2 \lfloor \sqrt{p} / 2 \rfloor 2 \sqrt{p} / 2 4 2p
Гиперкуб log p p/2 log p (p log p)/2

1.5. Характеристика системных платформ для построения кластеров

В качестве системной платформы для построения кластеров используют обе наиболее распространенные в настоящий момент операционные системы Unix и Microsoft Windows. Далее в пособии подробно будет рассмотрено решение на основе ОС семейства Microsoft Windows; характеристика подхода на базе ОС Unix может быть получена, например, в [71].

Microsoft Compute Cluster Server 2003 (CCS) представляет собой интегрированную платформу для поддержки высокопроизводительных вычислений на кластерных системах. CCS состоит из операционной системы Microsoft Windows Server 2003 и Microsoft Compute Cluster Pack (CCP) – набора интерфейсов, утилит и инфраструктуры управления. Вместе с CCP поставляется SDK, содержащий необходимые инструменты разработки программ для CCS, включая собственную реализацию MPI (Microsoft MPI). Кроме того, к Microsoft Compute Cluster Server 2003 логически примыкает Microsoft Visual Studio 2005 — интегрированная среда разработки (IDE), содержащая компилятор и отладчик программ, разработанных с использованием технологий MPI и OpenMP.

В качестве вычислительных узлов кластера могут быть применены 64-битные процессоры семейства x86 c, как минимум, 512 Мб оперативной памяти и 4 Гб свободного дискового пространства.

На вычислительных узлах кластера должна быть установлена операционная система Microsoft Windows Server 2003 (Standard, Enterprise или Compute Cluster Edition).

В состав CCP входит Microsoft MPI – версия реализации стандарта MPI 2 от Argonne National Labs. MS MPI совместима с MPICH 2 и поддерживает полнофункциональный API с более чем 160 функциями. MS MPI в Windows Compute Cluster Server 2003 задействует WinSock Direct протокол для наилучшей производительности и эффективного использования центрального процессора. MS MPI может использовать любое Ethernet-соединение, поддерживаемое Windows Server 2003, а также такие соединения, как InfiniBand или Myrinet, с применением WinSock Direct драйверов, поставляемых производителями аппаратного обеспечения. MS MPI поддерживает языки программирования C, Fortran 77 и Fortran 90, а Microsoft Visual Studio 2005 включает в себя параллельный отладчик, работающий с MS MPI. Разработчики могут запустить свое MPI-приложение на нескольких вычислительных узлах, и Visual Studio автоматически соединится с процессами на каждом узле, позволяя разработчику приостанавливать приложение и просматривать значения переменных в каждом процессе отдельно.

Кроме реализации MPI в состав CCP входит удобная система планирования заданий, позволяющая просматривать состояния всех запущенных задач, собирать статистику, назначать запуски программ на определенное время, завершать "зависшие" задачи и пр. В текущей версии работа возможна либо через графический интерфейс, либо через командную строку. В окончательной версии будет предусмотрена возможность обращения к системе и через другие интерфейсы: COM, web-сервис и др.

Windows Computer Cluster Server 2003 поддерживает 5 различных сетевых топологий, при этом каждый узел может иметь от 1 до 3 сетевых карточек. Правильный выбор используемой топологии необходим для оптимального функционирования вычислительного кластера.