ГОСЫ / Paral_programirovanie_otvety_3vopros
.pdfБалансировка алгоритма задачи.
Балансировка алгоритма задачи – это обеспечение равномерной (примерно одинаковой)
вычислительной нагрузки процессоров.
Алгоритм задачи из нашего примера - поэлементного сложения массивов будет сбалансирован при 2)-ом способе распределения элементов.
Способы распараллеливания: крупноблочное, мелкозернистое, конвейерное.
В литературе часто встречаются термины указанных способов распараллеливания. Что они означают? Во-первых, все они относятся, как правило, к большим стадиям выполнения программы, характеризуя свойства численного алгоритма, исполняемого на этой стадии.
Программа может исполнять разные численные алгоритмы на разных стадиях и, в целом,
обычно ей приписывают свойство того численного алгоритма, который сдерживает её распараллеливание.
Под крупноблочным распараллеливанием, понимается такой способ, который строго ограничен по числу возможных параллельных процессов числом некоторых крупных блоков данных, например, числом областей с разными веществами или деталей конструкции,
не зависимо от разрешающей способности (числа ячеек) сетки. В задачах математического моделирование это ещё обозначают термином по-областное распараллеливание. Например,
если мы имеем слоистою горную породу, мы можем для описания протекающих в этой горной породе прцессов построить свою сетку в каждом слое, решая в каждом слое свою подзадачу и увязывая их решение между собой через граничные условия.
Под мелкозернистым распараллеливанием понимается такой способ, который ограничен только размером ячейки счетной сетки, таким образом, что при дальнейшем ее уменьшении время взаимодействия процессов становится больше времени обработки этой ячейки. При таком подходе, использование более мелкой сетки (с большей разрешающей способностью для достижения более точного результата) позволяет использовать для ее обработки (решения задачи) большее число процессов. Для полноценного использования параллельной ЭВМ, состоящей из большого числа процессоров, только такой способ и является наиболее продуктивным. Можно сочетать крупно-блочное (по-областное)
распараллеливание с мелкозернистым, что только улучшает параллельные свойства программы.
11
Под конвейерным распараллеливанием понимается такой способ, который выстраивает цепочку вычислений каждым процессом по шагам, таким образом что i-тый шаг процесса Y, может начаться только после выполнения i-го шага процессом X. В таком случае процесс X считается предшественником процесса Y (а Y – преемником). Упорядочивая процессы по шагу 1, мы получаем цепочку процессов обработчиков. При этом распараллеливание получается за счет того, что i+... шаг процесса X может быть совмещен с шагом i процесса Y. Таким образом, получается, что все процессы начинают работу в разное время по мере готовности данных для них от предшественников, полностью совмещая выполнение множества (лучше много) промежуточных шагов, то тех пор пока первый предшественник не закончит свою работу.
Определение. Этап от начала работы первого процесса до начала работы последнего процесса называется этапом разгона конвейера (на этом этапе после выполнения каждого шага, к процессу обработки подключается дополнительный процесс).
Определение. Этап от окончания работы первого процесса до окончания последнего процесса называется участком торможения (на этом этапе после выполнения каждого шага из процесса обработки исключается один процесс).
Определение. Промежуточный между двумя этими этапами участок исполнения параллельно-конвейерного алгоритма называется этапом насыщения, или этапом полной загрузки конвейера.
Конвейерное распараллеливание может быть мелкозернистым. В отличие от конвейерного способа, при чисто параллельном способе все процессы, имея в наличии готовые для обработки данные могут одновременно начать работу попутно обмениваясь необходимой информацией. Если этот чисто параллельный способ так же является мелкозернистым, то при прочих равных условиях (например, экономичности) он лучше конвейерного, поскольку при использовании одного и того же числа процессоров он их использует более эффективно.
Обычно, он менее чувствителен к увеличению числа используемых процессоров, чем конвейерный, при одинаковом объеме данных параллельно обрабатываемых данных
(например, одинаковом количестве ячеек счетной сетки) тем и другим способом.
12
5. Классификация многопроцессорных вычислительных систем. Техническая
реализация многопроцессорных систем.
Классификация вычислительных систем
Одним из наиболее распространенных способов классификации ЭВМ является система Флинна (Flynn), в основу которой положен способ взаимодействия последовательностей
(потоков) выполняемых команд и обрабатываемых данных. В результате такого подхода различают следующие основные типы систем:
SISD (Single Instruction, Single Data) – системы, в которых существует одиночный поток команд и одиночный поток данных; к данному типу систем можно отнести обычные последовательные ЭВМ;
SIMD (Single Instruction, Multiple Data) – системы c одиночным потоком команд и множественным потоком данных; это многопроцессорные вычислительные системы, в
которых в каждый момент времени может выполняться одна и та же команда для обработки нескольких информационных элементов; подобной архитектурой обладают, например,
многопроцессорные системы с единым устройством управления;
MISD (Multiple Instruction, Single Data) – системы, в которых существует множественный поток команд и одиночный поток данных; относительно данного типа систем нет единого мнения – ряд специалистов говорят, что примеров конкретных ЭВМ, соответствующих данному типу вычислительных систем, не существует, и введение подобного класса предпринимается для полноты системы классификации; другие же относят к данному типу,
например, системы с конвейерной обработкой данных;
MIMD (Multiple Instruction, Multiple Data) – системы c множественным потоком команд и множественным потоком данных; к подобному классу систем относится большинство параллельных многопроцессорных вычислительных систем.
Хотя система Флинна широко используется при конкретизации типов компьютерных систем, такая классификация приводит к тому, что практически все виды параллельных систем (несмотря на их существенную разнородность) относятся к одной группе MIMD.
Предпринимались неоднократные попытки детализации системы Флинна. Так, например, для класса MIMD предложена структурная схема в которой дальнейшее разделение типов многопроцессорных систем основывается на способах организации оперативной памяти в этих системах (системы на общей и распределенной памяти).
13
Техническая реализация многопроцессорных систем
Существующие параллельные вычислительные средства класса MIMD образуют три технических подкласса: симметричные мультипроцессоры (SMP), системы с массовым параллелизмом (МРР) и кластеры. В основе этой классификации лежит структурно-
функциональный подход.
Симметричные мультипроцессоры используют принцип разделяемой памяти. В этом случае система состоит из нескольких однородных процессоров и массива общей памяти
(обычно из нескольких независимых блоков). Все процессоры имеют доступ к любой точке памяти с одинаковой скоростью. Процессоры подключены к памяти с помощью общей шины или коммутатора. Аппаратно поддерживается когерентность кэшей.
Наличие общей памяти сильно упрощает взаимодействие процессоров между собой,
однако накладывает сильные ограничения на их число. (например, не более 32 в реальных системах). Вся система работает под управлением единой ОС (обычно UNIX-подобной).
Системы с массовым параллелизмом содержат множество процессоров c индивидуальной памятью в каждом из них Вычислительный кластер − это совокупность компьютеров,
объединенных в рамках некоторой сети для решения одной задачи. В качестве вычислительных узлов обычно используются доступные на рынке однопроцессорные компьютеры, двух− или четырехпроцессорные SMP-серверы. Каждый узел работает под управлением своей копии операционной системы, в качестве которой чаще всего используются стандартные операционные системы: Linux, NT, Solaris и т.п. Состав и мощность узлов может меняться даже в рамках одного кластера, давая возможность создавать неоднородные системы.
Для кластерных систем в соответствии с сетевым законом Амдаля характеристики коммуникационных сетей имеют принципиальное значение.
Коммуникационные сети две основные характеристики: латентность − время начальной задержки при посылке сообщений и пропускную способность сети, определяющую скорость передачи информации по каналам связи. При выполнении функции передачи данных, прежде чем покинуть процессор, последовательно выполняется набор операций,
определяемый особенностями программного обеспечения и аппаратуры. Наличие латентности определяет и тот факт, что максимальная скорость передачи по сети не может быть достигнута на сообщениях с небольшой длиной.
14
6. Вычислительные системы с распределенной памятью. Основные принципы выполнения параллельных вычислений с передачей сообщений
Данный подход используется при построении двух важных типов многопроцессорных вычислительных систем (см. рисунок) - массивно-параллельных систем (massively parallel processor or MPP) и кластеров (clusters).
Кластерные системы − это более распространенный вариант MPP–систем, где также используется принцип передачи сообщений. В настоящее время в качестве вычислительных узлов используются двух или четырехпроцессорные SMP-серверы. Каждый узел работает под управлением своей копии операционной системы, в качестве которой чаще всего используются стандартные операционные системы: Linux, NT, Solaris и т.п. Состав и мощность узлов может меняться в рамках одного кластера, давая возможность создавать неоднородные системы.
Для кластерных систем в соответствии с сетевым законом Амдаля характеристики коммуникационных сетей имеют принципиальное значение. Коммуникационные сети имеют две основные характеристики: латентность − время начальной задержки при посылке сообщений и пропускную способность сети, определяющую скорость передачи информации по каналам связи. При выполнении функции передачи данных, прежде чем покинуть процессор, последовательно выполняется набор операций, определяемый особенностями программного обеспечения и аппаратуры. Наличие латентности определяет и тот факт, что максимальная скорость передачи по сети не может быть достигнута на сообщениях с небольшой длиной.
15
Использование распределенной памяти упрощает задачу создания мультипроцессорных систем, однако, возникающие при этом проблемы эффективного использования распределенной памяти приводят к существенному повышению сложности параллельных вычислений. Поскольку каждый процессор системы может использовать только свою локальную память, то для доступа к данным, располагаемым на других процессорах,
необходимо явно выполнять операции передачи сообщений (message passing operations).
Каждый процесс обладает собственными ресурсами, то есть выполняется в собственной памяти, и тем самым процессы защищены один от другого, т.е. один процесс не в состоянии неконтролируемым образом прочитать что-либо из памяти другого процесса или записать в нее.
Процесс – это программная единица, у которой имеется собственное адресное пространство и одна или несколько нитей. Процессор − фрагмент аппаратных средств,
способный к выполнению программы. Если в кластере используются SMP–узлы, то для организации вычислений возможны два варианта:
1.для каждого процессора в SMP-узле порождается отдельный процесс. Процессы внутри узла обмениваются сообщениями через разделяемую память.
2.на каждом узле запускается только один процесс. Внутри каждого процесса производится распараллеливание в модели "общей памяти", например с помощью директив OpenMP.
В модели передачи сообщений процессы, выполняющиеся параллельно, имеют раздельные адресные пространства. Связь происходит, когда часть адресного пространства одного процесса скопирована в адресное пространство другого процесса. Эта операция совместная,
т.е. один процесс выполняет операцию передачи сообщения, а второй процесс − операцию его получения.
Оптимально для параллельного выполнения в алгоритмах решения вычислительных задач достаточно выделять только крупные независимые части расчетов, что, упрощает построение параллельных методов вычислений и уменьшает потоки передаваемых данных между компьютерами кластера. Вместе с этим следует отметить, что организация взаимодействия вычислительных узлов кластера при помощи передачи сообщений обычно приводит к значительным временным задержкам, что накладывает дополнительные ограничения на тип разрабатываемых параллельных алгоритмов и программ.
16
7. Характеристика типовых схем коммуникации в многопроцессорных вычислительных системах. Примеры элементарных топологий сети передачи данных. Основные характеристики топологии.
При организации параллельных вычислений в мультикомпьютерах для организации взаимодействия, синхронизации и взаимоисключения параллельно выполняемых процессов используется передача данных между процессорами вычислительной среды. Временные задержки при передаче данных по линиям связи могут оказаться существенными (по сравнению с быстродействием процессоров) и, как результат, коммуникационная трудоемкость алгоритма оказывает существенное влияние на выбор параллельных способов решения задач.
Примеры топологий сети передачи данных
Структура линий коммутации между процессорами вычислительной системы
(топология сети передачи данных) определяется, как правило, с учетом возможностей эффективной технической реализации. Немаловажную роль при выборе структуры сети играет и анализ интенсивности информационных потоков при параллельном решении наиболее распространенных вычислительных задач. К числу типовых топологий обычно относят следующие схемы коммуникации процессоров (см. рисунок):
Полный граф (completely-connected graph or clique) – система, в которой между любой парой процессоров существует прямая линия связи; поэтому, данная топология обеспечивает минимальные затраты при передаче данных, однако является сложно реализуемой при большом количестве процессоров;
Примеры топологий многопроцессорных вычислительных систем
17
Линейка (linear array or farm) – система, в которой все процессоры перенумерованы по порядку и каждый процессор, кроме первого и последнего, имеет линии связи только с двумя соседними (с предыдущим и последующим) процессорами; такая схема является, с одной стороны, просто реализуемой, а с другой стороны, соответствует структуре передачи данных при решении многих вычислительных задач (например, при организации конвейерных вычислений);
Кольцо (ring) – данная топология получается из линейки процессоров соединением первого и последнего процессоров линейки;
Звезда (star) – система, в которой все процессоры имеют линии связи с некоторым управляющим процессором; данная топология является эффективной, например, при организации централизованных схем параллельных вычислений;
Решетка (mesh) – система, в которой граф линий связи образует прямоугольную сетку
(обычно двух - или трехмерную); подобная топология может быть достаточно просто реализована и, кроме того, может быть эффективно использована при параллельном выполнении многих численных алгоритмов (например, при реализации методов анализа математических моделей, описываемых дифференциальными уравнениями в частных производных);
Гиперкуб (hypercube) – данная топология представляет частный случай структуры решетки, когда по каждой размерности сетки имеется только два процессора; данный вариант организации сети передачи данных достаточно широко распространен в практике и характеризуется следующим рядом отличительных признаков:
а) два процессора имеют соединение, если двоичные представления их номеров имеют только одну различающуюся позицию;
б) в – N мерном гиперкубе каждый процессор связан ровно с соседями;
в) N-мерный гиперкуб может быть разделен на два (N-1)-мерных гиперкуба (всего возможно N различных разбиений);
г) кратчайший путь между любыми двумя процессорами имеет длину, совпадающую с количеством различающихся битовых значений в номерах процессоров (данная величина известна как расстояние Хэмминга).
18
Топология сети вычислительных кластеров
Топология сети кластера представляет собой полный граф, в котором передача данных может быть организована между любыми двумя вершинами (процессорами сети).
Одновременно каждый процессор может принимать участие только в одной операции приема-передачи данных. Очевидно, что параллельно могут выполняться только те коммуникационные операции, в которых взаимодействующие пары процессоров не пересекаются между собой.
Характеристики топологии сети
В качестве основных характеристик топологии сети передачи данных наиболее широко используется следующий ряд показателей:
•Диаметр – показатель, определяемый как максимальное расстояние между двумя процессорами (под расстоянием обычно понимается величина кратчайшего пути между процессорами); данная величина может характеризовать максимально-необходимое время для передачи данных между процессорами, поскольку время передачи обычно прямо пропорционально длине пути;
•Связность (connectivity) – показатель, характеризующий наличие разных маршрутов передачи данных между процессорами сети; конкретный вид данного показателя может быть определен, например, как минимальное количество дуг, которое надо удалить для разделения сети передачи данных на две несвязные области;
•Ширина бинарного деления (bisection width) – показатель, определяемый как минимальное количество дуг, которое надо удалить для разделения сети передачи данных на две несвязные области одинакового размера;
•Стоимость – показатель, который может быть определен, например, как общее количество линий передачи данных в многопроцессорной вычислительной системе.
19
Для сравнения в таблице приводятся значения перечисленных показателей для различных топологий сети передачи данных.
20
