Лекция 5. Парадигмы параллельного...

50
Начало Модели взаимодействия процессов Мониторы Портфель задач Название Основные концепции Лекция 5. Парадигмы параллельного программирования Параллельное программирование 13 декабря 2010 г. Параллельное программирование 1 / 28

Upload: others

Post on 10-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

НазваниеОсновные концепции

Лекция 5. Парадигмы параллельногопрограммирования

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

13 декабря 2010 г.

Параллельное программирование 1 / 28

Page 2: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

НазваниеОсновные концепции

Стили (парадигмы) параллельного программирования

Стили программирования

Итеративный параллелизм.Рекурсивный параллелизм.«Производители и потребители» (конвейеры).«Клиенты и серверы».«Взаимодействующие равные».

Параллельное программирование 2 / 28

Page 3: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

НазваниеОсновные концепции

Характеристика парадигм программирования

Стили программирования

Итеративный параллелизм: процессы выполняют циклические вычисления,решая одну задачу (итерации одного цикла).

Рекурсивный параллелизм: процессы выполняют независимые рекурсивныевызовы процедуры (комбинаторные задачи, метод ветвейи границ и т. д.)

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

Параллельное программирование 3 / 28

Page 4: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

НазваниеОсновные концепции

Характеристика парадигм программирования

Стили программирования

Итеративный параллелизм: процессы выполняют циклические вычисления,решая одну задачу (итерации одного цикла).

Рекурсивный параллелизм: процессы выполняют независимые рекурсивныевызовы процедуры (комбинаторные задачи, метод ветвейи границ и т. д.)

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

Параллельное программирование 3 / 28

Page 5: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

НазваниеОсновные концепции

Характеристика парадигм программирования

Стили программирования

Итеративный параллелизм: процессы выполняют циклические вычисления,решая одну задачу (итерации одного цикла).

Рекурсивный параллелизм: процессы выполняют независимые рекурсивныевызовы процедуры (комбинаторные задачи, метод ветвейи границ и т. д.)

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

Параллельное программирование 3 / 28

Page 6: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

НазваниеОсновные концепции

Характеристика парадигм (окончание)

Стили программирования (окончание)

«Клиенты и серверы»: процесс клиента отправляет запрос серверуна оказание услуги и ожидает от него результата. Процесссервера в цикле ожидает запроса от клиента(одно-/многопоточное приложение). Обобщение вызовапроцедуры (RPC).

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

Параллельное программирование 4 / 28

Page 7: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

НазваниеОсновные концепции

Характеристика парадигм (окончание)

Стили программирования (окончание)

«Клиенты и серверы»: процесс клиента отправляет запрос серверуна оказание услуги и ожидает от него результата. Процесссервера в цикле ожидает запроса от клиента(одно-/многопоточное приложение). Обобщение вызовапроцедуры (RPC).

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

Параллельное программирование 4 / 28

Page 8: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель взаимодействия «управляющий-рабочие»

Управляющий

Рабочий 1

Рабочий 2

Рабочий N

. . .

Рис. 1: Концепция «управляющий-рабочие»

Параллельное программирование 5 / 28

Page 9: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Алгоритм умножения матриц

Пример (умножение матриц)

входные данные: A,B ∈ Mn×n (R)выходные данные: C ∈ Mn×n (R)начало

для каждого i ∈ [1, n]N выполнятьдля каждого j ∈ [1, n]N выполнять

cij ← 0для каждого k ∈ [1, n]N выполнять

cij ← cij + aik bkj

Параллельное программирование 6 / 28

Page 10: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель взаимодействия «управляющий-рабочие»

Управляющий

A B C

Рабочий 1

A B C

Рабочий 2

A B C

Рабочий 3

A B C

Рис. 2: Концепция «управляющий-рабочие»

Параллельное программирование 7 / 28

Page 11: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель взаимодействия «управляющий-рабочие»

Управляющий

A B C

Рабочий 1

A B C

Рабочий 2

A B C

Рабочий 3

A B C

Рис. 2: Концепция «управляющий-рабочие»

Параллельное программирование 7 / 28

Page 12: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель взаимодействия «управляющий-рабочие»

Управляющий

A B C

Рабочий 1

A B C

Рабочий 2

A B C

Рабочий 3

A B C

Рис. 2: Концепция «управляющий-рабочие»

Параллельное программирование 7 / 28

Page 13: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель взаимодействия «управляющий-рабочие»

Управляющий

A B C

Рабочий 1

A B C

Рабочий 2

A B C

Рабочий 3

A B C

Рис. 2: Концепция «управляющий-рабочие»

Параллельное программирование 7 / 28

Page 14: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Умножение матриц «управляющий-рабочие»

Пример (алгоритм координирующего процесса)

началодля каждого i ∈ [1, n]N выполнять

Отправить_процессуi (ai∗)Отправить_процессуi (B)

для каждого i ∈ [1, n]N выполнятьПринять_у_процессаi (ci∗)

Параллельное программирование 8 / 28

Page 15: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Умножение матриц (окончание)

Пример (Алгоритм «управляющий-рабочие» для i-го процесса)

началоПринять_у_процесса0(ai∗)Принять_у_процесса0(B)для каждого j ∈ [1, n]N выполнять

cij ← 0для каждого k ∈ [1, n]N выполнять

cij ← cij + aik bkj

Отправить_процессу0(ci∗)

Параллельное программирование 9 / 28

Page 16: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель «взаимодействующие равные»

. . . . . .

Рабочий N

Рабочий 1

Рабочий 2

Рис. 3: Концепция «круговой конвейер»

Параллельное программирование 10 / 28

Page 17: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель «взаимодействующие равные» (окончание)

Управляющий

A B C

Рабочий 1

A B C

Рабочий 2

A B C

Рабочий 3

A B C

Рис. 4: Концепция «круговой конвейер»

Параллельное программирование 11 / 28

Page 18: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель «взаимодействующие равные» (окончание)

Управляющий

A B C

Рабочий 1

A B C

Рабочий 2

A B C

Рабочий 3

A B C

Рис. 4: Концепция «круговой конвейер»

Параллельное программирование 11 / 28

Page 19: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель «взаимодействующие равные» (окончание)

Управляющий

A B C

Рабочий 1

A B C

Рабочий 2

A B C

Рабочий 3

A B C

Рис. 4: Концепция «круговой конвейер»

Параллельное программирование 11 / 28

Page 20: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель «взаимодействующие равные» (окончание)

Управляющий

A B C

Рабочий 1

A B C

Рабочий 2

A B C

Рабочий 3

A B C

Рис. 4: Концепция «круговой конвейер»

Параллельное программирование 11 / 28

Page 21: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модель «взаимодействующие равные» (окончание)

Управляющий

A B C

Рабочий 1

A B C

Рабочий 2

A B C

Рабочий 3

A B C

Рис. 4: Концепция «круговой конвейер»

Параллельное программирование 11 / 28

Page 22: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Умножение матриц «взаимодействующие равные»

Пример (алгоритм рабочего процесса с номером i)

входные данные: i ∈ Z+, ai∗, b∗i ∈ Rn

выходные данные: ci∗ ∈ Rn

началоcii ← 〈ai∗, b∗i 〉inext ← 1 + (i + 1) mod n; // № следующего по кругуiprev ← 1 + (i − 1) mod n; // № предыдущего по кругудля каждого j ∈ [1, i − 1]N ∪ [i + 1, n]N выполнять

Отправить_процессуinext(b∗i )Принять_у_процессаiprev(b∗j) ; // в ту же переменную b∗icij ←

⟨ai∗, b∗j

Параллельное программирование 12 / 28

Page 23: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Модели закрытого/открытого конвейера

Рабочий 1 Рабочий 2 . . . Рабочий N

Управляющий

Рис. 5: Концепция «закрытый конвейер»

Рабочий 1 Рабочий 2 . . . Рабочий N

Рис. 6: Концепция «открытый конвейер»

Параллельное программирование 13 / 28

Page 24: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Алгоритм процесса, координирующего конвейер

Пример (алгоритм управляющего процесса)

входные данные: A,B ∈ Mn×n (R)выходные данные: C ∈ Mn×n (R)начало

для каждого i ∈ [1, n]N выполнятьОтправить_процессу1(ai∗)

для каждого j ∈ [1, n]N выполнятьОтправить_процессу1(b∗j)

для i = n, n − 1, . . . , 1 выполнять // в обратном порядкеПринять_у_процессаn(ci∗)

Параллельное программирование 14 / 28

Page 25: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Алгоритм рабочего процесса

Пример (алгоритм i-го рабочего процесса)

вспомогательные данные: a, b, c , d ∈ Rn

начало1 Получить строки матрицы A с номерами от i до n. Первую сохранить в a,

остальные передать дальше (если i < n)2 Получить все столбцы матрицы B и вычислить i-ю строку C . Столбцы B

передать дальше, если i < n3 Передать вычисленную строку матрицы C следующему рабочему (при

i < n) или управляющему процессу.

Параллельное программирование 15 / 28

Page 26: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Алгоритм рабочего процесса (продолжение)

Пример (алгоритм 1: передача строк матрицы A)

Принять_у_процессаi−1(a); // 0-й процесс — управляющийдля каждого ` ∈ [i + 1, n]N выполнять // при i == n ни разу

Принять_у_процессаi−1(d)Отправить_процессуi+1(d)

Пример (алгоритм 2: вычисление строки C )

для каждого j ∈ [1, n]N выполнятьПринять_у_процессаi−1(b)если i < n, то

Отправить_процессуi+1(b)cj ← 〈a, b〉

Параллельное программирование 16 / 28

Page 27: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Алгоритм рабочего процесса (продолжение)

Пример (алгоритм 1: передача строк матрицы A)

Принять_у_процессаi−1(a); // 0-й процесс — управляющийдля каждого ` ∈ [i + 1, n]N выполнять // при i == n ни разу

Принять_у_процессаi−1(d)Отправить_процессуi+1(d)

Пример (алгоритм 2: вычисление строки C )

для каждого j ∈ [1, n]N выполнятьПринять_у_процессаi−1(b)если i < n, то

Отправить_процессуi+1(b)cj ← 〈a, b〉

Параллельное программирование 16 / 28

Page 28: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

Управляющий-рабочиеВзаимодействующие равныеКонвейер

Алгоритм рабочего процесса (окончание)

Пример (алгоритм 3: передача строки C )

inext ← (i + 1) mod (n + 1); // после n идёт 0Отправить_процессуinext(c)для каждого ` ∈ [1, i − 1]N выполнять // остальные строки C

Принять_у_процессаi−1(d)Отправить_процессуinext(d)

Параллельное программирование 17 / 28

Page 29: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Мониторы

Определения

Монитор: инкапсулирует представление абстрактного объекта,разделяемого несколькими процессами, и обеспечивает наборопераций для доступа к нему. Вся синхронизация доступаобеспечивается самим монитором.

Пассивный монитор: реализуется в системах с общей памятью при помощиразделяемых переменных и примитивов синхронизации(условные переменные и т. д.)

Активный монитор: реализуется в системах с распределённой памятью припомощи передачи сообщений по концепции «клиент-сервер»в виде отдельного процесса («сервер»).

Инвариант монитора: условие, истинное по отношению к состоянию(внутренним переменным) монитора независимо от порядкавызова его процедур.

Параллельное программирование 18 / 28

Page 30: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Мониторы

Определения

Монитор: инкапсулирует представление абстрактного объекта,разделяемого несколькими процессами, и обеспечивает наборопераций для доступа к нему. Вся синхронизация доступаобеспечивается самим монитором.

Пассивный монитор: реализуется в системах с общей памятью при помощиразделяемых переменных и примитивов синхронизации(условные переменные и т. д.)

Активный монитор: реализуется в системах с распределённой памятью припомощи передачи сообщений по концепции «клиент-сервер»в виде отдельного процесса («сервер»).

Инвариант монитора: условие, истинное по отношению к состоянию(внутренним переменным) монитора независимо от порядкавызова его процедур.

Параллельное программирование 18 / 28

Page 31: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Мониторы

Определения

Монитор: инкапсулирует представление абстрактного объекта,разделяемого несколькими процессами, и обеспечивает наборопераций для доступа к нему. Вся синхронизация доступаобеспечивается самим монитором.

Пассивный монитор: реализуется в системах с общей памятью при помощиразделяемых переменных и примитивов синхронизации(условные переменные и т. д.)

Активный монитор: реализуется в системах с распределённой памятью припомощи передачи сообщений по концепции «клиент-сервер»в виде отдельного процесса («сервер»).

Инвариант монитора: условие, истинное по отношению к состоянию(внутренним переменным) монитора независимо от порядкавызова его процедур.

Параллельное программирование 18 / 28

Page 32: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Мониторы

Определения

Монитор: инкапсулирует представление абстрактного объекта,разделяемого несколькими процессами, и обеспечивает наборопераций для доступа к нему. Вся синхронизация доступаобеспечивается самим монитором.

Пассивный монитор: реализуется в системах с общей памятью при помощиразделяемых переменных и примитивов синхронизации(условные переменные и т. д.)

Активный монитор: реализуется в системах с распределённой памятью припомощи передачи сообщений по концепции «клиент-сервер»в виде отдельного процесса («сервер»).

Инвариант монитора: условие, истинное по отношению к состоянию(внутренним переменным) монитора независимо от порядкавызова его процедур.

Параллельное программирование 18 / 28

Page 33: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация мониторов

Реализация в системах с распределённой памятью

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

Параллельное программирование 19 / 28

Page 34: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация мониторов

Реализация в системах с распределённой памятью

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

Параллельное программирование 19 / 28

Page 35: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация мониторов

Реализация в системах с распределённой памятью

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

Параллельное программирование 19 / 28

Page 36: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация мониторов (окончание)

Реализация в системах с распределённой памятью (окончание)

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

Параллельное программирование 20 / 28

Page 37: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация мониторов (окончание)

Реализация в системах с распределённой памятью (окончание)

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

Параллельное программирование 20 / 28

Page 38: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация мониторов (окончание)

Реализация в системах с распределённой памятью (окончание)

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

Параллельное программирование 20 / 28

Page 39: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация мониторов (окончание)

Реализация в системах с распределённой памятью (окончание)

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

Параллельное программирование 20 / 28

Page 40: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация мониторов (окончание)

Реализация в системах с распределённой памятью (окончание)

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

Параллельное программирование 20 / 28

Page 41: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация мониторов (окончание)

Реализация в системах с распределённой памятью (окончание)

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

Параллельное программирование 20 / 28

Page 42: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Алгоритм процесса-сервера

Пример (алгоритм реализации активного монитора)

вспомогательные данные: k ∈ Z // номер процесса клиентаначало

Инициализировать локальные переменныепока обрабатывать, выполнять

Принять_у_любого(k, н_операции, аргументы)в зависимости от н_операции выполнять

при”операция1“

Тело операции”операция1“;

. . . ; // аналогично — остальные операциипри

”операцияq“

Тело операции”операцияq“;

Отправить_процессуk(результат)

Параллельное программирование 21 / 28

Page 43: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Алгоритм процесса-клиента

Пример (алгоритм реализации вызова активного монитора)

функция Вызвать_клиентом_операцию_1(аргументы)начало

// k — номер клиентаОтправить_процессу0(k ,

”операция1“, аргументы)

/* Требуется, только если операция имеет возвращаемое значение */Принять_у_процесса0(результат)вернуть результат

Параллельное программирование 22 / 28

Page 44: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация стека

Пример (алгоритм обслуживания стека)

вспомогательные данные: k, k ′ ∈ Z // номера клиентовначало

пока обрабатывать, выполнятьПринять_у_любого(k, н_операции, аргументы)в зависимости от н_операции выполнять

при”положить_в_стек“

1 Реализация операции”положить_в_стек“

при”взять_из_стека“

2 Реализация операции”взять_из_стека“

Параллельное программирование 23 / 28

Page 45: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация стека (окончание)

Пример (алгоритм помещения данных в стек (строка 1))

если Очередь_клиентов_пуста, то // очередь ожидающих клиентовПоместить_в_стек(аргументы.значение)

иначе // есть ожидающие клиенты в очередиВзять_из_очереди_клиентов(k ′)Отправить_процессуk′(аргументы.значение)

Пример (алгоритм извлечения данных из стека (строка 2))

если Стек_пуст, тоПоместить_в_очередь_клиентов(k); // в очередь ожидающих// Не отправлять клиенту ответ

иначе // стек не пустВзять_из_стека(значение)Отправить_процессуk(значение)

Параллельное программирование 24 / 28

Page 46: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределенияРеализацияПример (стек)

Реализация стека (окончание)

Пример (алгоритм помещения данных в стек (строка 1))

если Очередь_клиентов_пуста, то // очередь ожидающих клиентовПоместить_в_стек(аргументы.значение)

иначе // есть ожидающие клиенты в очередиВзять_из_очереди_клиентов(k ′)Отправить_процессуk′(аргументы.значение)

Пример (алгоритм извлечения данных из стека (строка 2))

если Стек_пуст, тоПоместить_в_очередь_клиентов(k); // в очередь ожидающих// Не отправлять клиенту ответ

иначе // стек не пустВзять_из_стека(значение)Отправить_процессуk(значение)

Параллельное программирование 24 / 28

Page 47: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределениеПример (умножение разрежённых матриц)

Портфель задач

Определения

Задача: независимая единица работы; различные задачи можновыполнять параллельно. Может порождать подзадачи.

Параллельное программирование 25 / 28

Page 48: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределениеПример (умножение разрежённых матриц)

Умножение разрежённых матриц

Пример (алгоритм управляющего процесса)

входные данные: A ∈ Mn×n (R) // по строкамвыходные данные: C ∈ Mn×n (R) // по строкамначало

inext ← 1; // номер следующей строкиidone ← 0; // количество выполненных задач// Пока нужны ещё задачи или результатыпока inext 6 n или idone < n, выполнять

// Реализация по схеме активного монитора1 Реализация операции н_операции

Параллельное программирование 26 / 28

Page 49: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределениеПример (умножение разрежённых матриц)

Умножение разрежённых матриц (продолжение)

Пример (алгоритм управляющего процесса (строка 1))

Принять_у_любого(k, н_операции, аргументы)в зависимости от н_операции выполнять

при”получить_задачу“

Отправить_процессуk(inext, ainext ∗); // строку Ainext ← inext + 1

при”поместить_результат“

i ← аргументы.номер_строкиci∗ ← аргументы.строкаidone ← idone + 1

Параллельное программирование 27 / 28

Page 50: Лекция 5. Парадигмы параллельного ...staff.mmcs.sfedu.ru/~dubrov/files/sl_parallel_05...1 Получить строки матрицы Aс номерами

НачалоМодели взаимодействия процессов

МониторыПортфель задач

ОпределениеПример (умножение разрежённых матриц)

Умножение разрежённых матриц (окончание)

Пример (алгоритм рабочего процесса)

входные данные: B ∈ Mn×n (R) // по столбцамначало

пока”истина“, выполнять

Отправить_процессу0(”получить_задачу“)

Принять_у_процесса0(i , ai∗); // номер и строку Aci∗ ← ai∗ BОтправить_процессу0(”

поместить_результат“, i , ci∗)

Параллельное программирование 28 / 28