Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Яп

.pdf
Скачиваний:
28
Добавлен:
15.03.2023
Размер:
6.44 Mб
Скачать

Мультиагентныераспределенныесистемы

Автономность: агенты, хотя бы частично, независимы

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

Децентрализация: нет агентов, управляющих всей системой

Агенты могут обмениватьсяполученными знаниями.

Может проявляться самоорганизация.

2/27/2023

Уровни параллелизма

• Можно обеспечить на уровне

1.Инструкций

2.Подпрограмм

3.Объектов (CORBA)

4.Приложения

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

Декомпозиция – разбиение задачи на части и её решение

Связывание – связь частей между собой

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

Показатели эффективности параллельного алгоритма

111

Ускорение (speedup)

получаемое при использовании параллельного алгоритма для p процессоров, по сравнению с последовательнымвариантом выполнения вычислений, определяетсявеличиной

Sp (n) T1(n)/Tp (n)

(величина n используется для параметризации вычислительной сложности решаемой задачи -

количество входныхданных задачи)

2/27/2023

Эффективность(efficiency)

использования параллельным алгоритмом процессоров при решении задачи определяется соотношением:

Ep (n) T1(n)/(pTp (n)) Sp (n)/ p

величина эффективности определяет среднюю долю времени выполнения параллельного алгоритма, в течение которого процессоры реально используются для решения задачи)

Стоимость (cost)

• Стоимость (cost) вычислений

Cp pTp

Стоимостно-оптимальный (cost-optimal)

параллельный алгоритм - метод, стоимость которого является пропорциональной времени выполнения наилучшего последовательного алгоритма.

Оценка максимально достижимого параллелизма

112

Закон Амдала

Всегда есть последовательные расчеты, которые не могут быть распараллелены.

Пусть f есть доля последовательныхвычисленийв

применяемом алгоритмеобработки данных.

Ускорениепроцесса вычислений при использовании p процессоров ограничивается величиной:

S

 

 

1

S*

1

p

f (1 f )/ p

p

 

 

 

• Только алгоритм, вовсе не содержащий последовательных вычислений (f=0), позволяет получитьлинейный приростпроизводительности с ростом количества вычислителей в системе.

2/27/2023

Закон Густавсона - Барсиса

• Ускорение масштабирования(scaled speedup)

Sp g (1 g)p p (1 g)p

g — доля последовательных расчётов в программе,

p — количество процессоров.

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

Масштабируемый алгоритм

Параллельный алгоритм называют

масштабируемым (scalable), если при росте числа процессоров он обеспечивает увеличение ускорения при сохранении постоянного уровня эффективности использования процессоров.

Проблемы параллельного программирования

113

Проблемы

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

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

Гонка данных

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

int x=1;

//Поток А: while(!stop) {x=0;}

//Поток B: while(!stop) { if (x!=0) y/x;}

Если проверки (x!=0) нет, то это приведет к ошибке

Другой способ– использовать механизмысинхронизации

455

2/27/2023

Голодание (бесконечная отсрочка)

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

R R

P1 P2 P3

Блокированные

R

P1 P2 P3

Активный Блокированные

P1 P2 P3

Блокированные Активный

Выходы:

Вызвать на исполнение готовые низкоприоритетные потоки даже при наличии высокоприоритетных.

Повысить приоритет голодающему.454

Взаимоблокировки

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

 

Процесс

P2

P1

Исходное

 

 

 

 

 

 

 

распределение

 

Ресурс

R1

R2

ресурсов

 

 

P2

P1

Тупиковая ситуация

 

P1

 

 

 

 

 

R1

R2

R1

R2

 

 

 

 

 

 

 

P2

456

114

Средства синхронизации

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

Участок программы,на протяжении которого ведется работа с критическимресурсомназывается

критическойсекцией.

Минимальная синхронизация включает:

1.Операциичтения могут выполняться параллельно

2.Операциизаписи не могут выполняться одновременно со чтением

3.Операциизаписи не могут выполняться параллельно другим операциям записи.

Мьютексы

Мьютексы – двоичный семафор.

Могут находиться в одном из двух состояний: отмеченном или неотмеченном.

Когда поток становится владельцем мьютекса, последний переводится в неотмеченное состояние.

Если задача освобождает мьютекс, его состояние становится отмеченным.

459

2/27/2023

Семафоры

Семафоры– классическийсемафорДейкстры.

Переменная S и две операцииP(S) и V(S).

V(S) – переменная S увеличиваетсяна 1 атомарным действием.К переменной S нет доступавовремя выполнения этой операции.

P(S) – переменная S уменьшается на 1 атомарнымдействием, S>=0. Если S уменьшитьневозможно,поток,выполняющий операциюP, ждет, покаэто уменьшение станет возможным.

Операция P заключаетв себепотенциальную возможность перехода процесса,который ее выполняет,в состояние ожидания(если S = 0).

Операция V можетпри некоторых обстоятельствах активизироватьпроцесс,приостановленныйоперацией P.

458

Параллелизм в Си++

С++ не содержит никаких синтаксическихпримитивовдля параллелизма.

Варианты:

библиотекаPOSIX(portable Operation System Interface) Threads;

Стандарти библиотекаMPI (MessagePassingInterface) –

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

CORBA (Common Object Request Broker Architecture) –

стандарт для распределенногокроссплатформенного объектно-ориентированногопрограммирования.Агентно- ориентированноеи мультиагентноепрограммирование.

CUDA + CUDA Toolkit – архитектура параллельных вычисленийот NVIDIA,позволяющая существенно увеличить вычислительнуюпроизводительностьблагодаря использованиюGPU (графических процессоров).

115

Процессы и потоки

Различают два уровня параллельной обработки:

1.Процесс – некоторая часть (единица) работы, создаваемая операционной системой.

2.Поток – часть выполняемого кода, которая может быть регламентированаопределенным образом. Не имеет своего адресного пространства.

Процесс может иметь несколько потоков выполнения и управления.

Процесс с несколькими потоками, выполняющимися параллельно, называется

многопоточным.

2/27/2023

Процессы и потоки. Сходства

Имеют идентификационный номер (id), состояние, набор регистров, приоритет и привязку к определеннойстратегии планирования

Имеют атрибуты, которые описывают их особенности для операционной системы

Имеют информационные блоки

Разделяют ресурсыс родительским процессом

Функционируют независимо от родительского процесса

Их создательможет управлять потоком или процессом

Могут изменятьсвои атрибуты

Могут создавать новые ресурсы

Не имеют доступа к ресурсамдругого процесса

Процессы и потоки. Различия

Потоки

Процессы

разделяют адресное пространство

имеют собственное адресное

процесса, который их создал

пространство

имеют прямой доступ к разделу данных

имеют собственную копию раздела

своего процесса

данных родительского процесса

могут напрямую взаимодействовать с

должны использовать механизм

другимипотоками своего процесса

межпроцессного взаимодействия для

 

связи с «братскими» процессами

почти не требуют системных затрат на

требуются значительные затраты

поддержку

системных ресурсов

создаются легко

требуютдублированияродительского

 

процесса

могут в значительной степени

управляют только дочерними

управлять потоками того же процесса

процессами

Изменения, вносимые в основной

изменения, вносимые в родительский

поток, могут влиять на поведение

процесс, не влияютна дочерние

другихпотоков процесса

процессы

Потоки

Для переключенияконтекста требуется меньше системных ресурсов.

Достигается более высокая производительность приложения.

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

Программа имеетболеепростую структуру.

Потоки могут разрушить адресное пространство процесса => один поток можетликвидировать целый процесс.

Потоки необходимосинхронизировать при параллельномдоступе.

Потоки не являются многократноиспользуемыми,т.к. существуют в рамках процесса.

116

2/27/2023

Функциональное

программирование

КОНЕЦ

465

466

117