Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KS_LK_AllInOne.docx
Скачиваний:
175
Добавлен:
23.11.2019
Размер:
28.78 Mб
Скачать
  1. Планирование работ в cow

Планирование работ в COW

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

1.Рассмотрим самую простую модель планирования. Должно быть известно, сколько процессоров нужно для каждой работы (задачи). Тогда задачи выстра­иваются в порядке FIFO («первым вошел — первым вышел») (рис. 8.31, а). Когда первая задача начала выполняться, происходит проверка, есть ли достаточное ко­личество процессоров для выполнения задачи, следующей по очереди. Если да, то она тоже начинает выполняться и т. д. Если нет, то система ждет, пока не появится достаточное количество процессоров. В нашем примере система COW содержит 8 процессоров, но она вполне могла бы содержать 128 процессоров, расположен­ных в блоках по 16 процессоров (получилось бы 8 групп процессоров) или в какой-нибудь другой комбинации.

Рис. 8.31. Планирование работы в системе COW: FIFO («первым вошел — первым вышел») (а);без блокировки начала очереди (б); заполнение прямоугольника «процессоры-время» (в).

Серым цветом показаны свободные процессоры

2.В глубже разработанном алгоритме задачи, которые не соответствуют количе­ству имеющихся в наличии процессоров, пропускаются и берется первая задача, для которой процессоров достаточно. Всякий раз, когда завершается выполнение задачи, очередь из оставшихся задач проверяется в порядке «первым вошел — пер­вым вышел». Результат применения этого алгоритма изображен на рис. 8.31, б.

3.Еще более сложный алгоритм требует, чтобы было известно, сколько процессо­ров нужно для каждой задачи и сколько минут займет ее выполнение. Располагая такой информацией, планировщик заданий может попытаться заполнить прямо­угольник «процессоры—время». Это особенно эффективно, когда задачи представ­лены на рассмотрение днем, а выполняться будут ночью. В этом случае планиров­щик заданий получает всю информацию о задачах заранее и может выполнять их в оптимальном порядке, как показано на рис. 8.31, в.

  1. Средства распараллеливания

7.Средства распараллеливания

Существует несколько разных подходов к программированию параллельных вычислительных систем:

  • на стандартных широко распространенных языках программирования с использованием коммуникационных библиотек и интерфейсов для организации межпроцессорного взаимодействия (PVM, MPI, HPVM, MPL, OpenMP, ShMem)

  • использование специализированных языков параллельного программирования и параллельных расширений (параллельные реализации Fortran и C/C++, ADA, Modula-3)

  • использование средств автоматического и полуавтоматического распараллеливания последовательных программ (BERT 77, FORGE, KAP, PIPS, VAST)

  • программирование на стандартных языках с использованием параллельных процедур из специализированных библиотек, которые ориентированы на решение задач в конкретных областях, например: линейной алгебры, методов Монте-Карло, генетических алгоритмов, обработки изображений, молекулярной химии, и т.п. (ATLAS, DOUG, GALOPPS, NAMD, ScaLAPACK).

Существует также немало инструментальных средств, которые упрощают проектирование параллельных программ. Например:

  • CODE - Графическая система для создания параллельных программ. Параллельная программа изображается в виде графа, вершины которого есть последовательные части программы. Для передачи сообщений используются PVM и MPI библиотеки.

  • TRAPPER - Коммерческий продукт немецкой компании Genias. Графическая среда программирования, которая содержит компоненты построения параллельного программного обеспечения.

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

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

MPI (The Message Passing Interface), имеет в настоящее время высокую популярность.

"Интерфейс передачи сообщений" – это стандарт, который используется для построения параллельных программ и использует модель обмена сообщениями. Существуют реализации MPI для языка C/C++ и Fortran как в бесплатных, так и коммерческих вариантах для большинства распространенных суперкомпьютерных платформ, в том числе High Performance кластерных систем, построенных на узлах с ОС Unix, Linux и Windows. За стандартизацию MPI отвечает MPI Forum (http://www.mpi-forum.org/). В новой версии стандарта 2.0 описано большое число новых интересных механизмов и процедур для организации функционирования параллельных программ: динамическое управление процессами, односторонние коммуникации (Put/Get), параллельные I/O

Для оценки функциональности MPI рассмотрим график зависимости времени вычисления задачи решения систем линейных уравнений в зависимости от количества задействованных процессоров в кластере. Кластер построен на процессорах Intel и системе межузловых соединений SCI (Scalable Coherent Interface). Естественно, задача частная, и не надо понимать полученные результаты как общую модель прогнозирования быстродействия желаемой системы.

Рисунок 11. Зависимость времени вычисления задачи решения систем линейных уравнений в зависимости от количества задействованных процессоров в кластере

На графике отображены две кривые, синяя – линейное ускорение и красная – полученное в результате эксперимента. То есть, в результате использования каждой новой ноды мы получаем ускорение выше, чем линейное. Автор эксперимента утверждает, что такие результаты получаются из-за более эффективного использования кэш памяти, что вполне логично и объяснимо.

  1. MPI–«Интерфейс передачи сообщений»

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]