- •Вычислительные процессы. Формальная модель. Свойства процесса.
- •2. Система процессов. Независимые процессы. Взаимодействие процессов.
- •Показатели параллельных вс и вычислений
- •4. Классы параллельных вс
- •5. Синхронная и асинхронная организация обмена сообщениями. Rdma.
- •Mpi: Стандарт mpi. Общие понятия. Области связи и коммуникаторы.
- •Общие процедуры mpi: Инициализация, Завершение.
- •Общие процедуры mpi: Определение общего числа параллельных процессов в группе. Определение номера процесса в группе.
- •Прием/передача сообщений между отдельными процессами (связь "точка-точка").
- •Посылка сообщения
- •Прием сообщения
- •Посылка и прием сообщения:
- •Mpi: Групповые (коллективные) взаимодействия. Рассылка целого сообщения процессам. Сборка данных от процессов. Групповые (коллективные) взаимодействия
- •Рассылка целого сообщения процессам
- •Сборка данных от процессов
- •Mpi: Групповые (коллективные) взаимодействия: Рассылка частей сообщения процессам. Сборка частей сообщения с процессов. Рассылка частей сообщения процессам
- •Выполнение глобальных операций с возвратом результатов во все процессы
- •Mpi: Синхронизация процессов. Синхронизация процессов
- •Mpi: Виртуализация топологии.
- •Декартова топология
- •Топология графа
- •Программирование мвс с общей памятью. Процессы и потоки в posix
- •OpenMp: Общие понятия. Область применения.
- •17. Директивы OpenMp: Директивы для определения параллельной области.
- •18. OpenMp: Директивы для распределения вычислений внутри параллельной области: Директива for.
- •19. OpenMp: Директивы для распределения вычислений внутри параллельной области: Директива sections. Директива single.
- •20. OpenMp: Директивы для распределения вычислений внутри параллельной области: Объединение директив parallel и for (sections).
- •Проблема тупиков в параллельных программных системах. Виды тупиков. Методы борьбы с тупиками в параллельных программных системах.
- •22.Централизованный метод обнаружения тупиков в параллельных программных системах
- •23. Децентрализованный метод обнаружения тупиков в параллельных программных системах
- •24.Предотвращение тупиков в параллельных программных системах
- •Синхронизация логического времени в параллельных программных системах
- •Синхронизация физического времени в параллельных программных системах
- •Распределение процессов по процессорам. Критерии и подходы. Распределение статической системы процессов.
- •28. Распределение процессов по процессорам. Централизованный метод “Up-Down”
- •29. Распределение процессов по процессорам. Иерархический алгоритм.
- •30. Распределение процессов по процессорам. Стохастические алгоритмы.
- •31. Формальные модели параллельных вычислений
- •Модель мультипотоковых вычислений Блумова-Лейзерсона
- •Планирование мультипотоковых вычислений. «Жадный планировщик».
- •Планирование мультипотоковых вычислений. «Занятые листья».
- •Планирование мультипотоковых вычислений. «Похитетель работ».
28. Распределение процессов по процессорам. Централизованный метод “Up-Down”
Работает и со статич. и с динамич. системами процессов.
Центральный диспетчер процессов/-ров ведет общий пул процессорных ресурсов, общую таблицу процессов. Он должен распределять процессорный ресурс по процессам.
Критерий: «справедливое» распределение проц. ресурса по процессам. Используются динамические приоритеты процессов. Каждому процессу Pi присваиваеися приоритет ki. При порожд.проц. ki=0 , далее к меняется каждый квант времени. к++ если процесс пользуется ресурсом(выполняется). к-- если процесс запросил и ждет процессор. к=const если процесс не выполняется и не запрашивает ресурс.
29. Распределение процессов по процессорам. Иерархический алгоритм.
Проблема алгоритма – запаздывание информации о ресурсах, поступающих супервизору. Для ее решения есть правила:
R – кол-во ресурсов под управлением супервизора
R’ – кол-во предоставленных ресурсов
N – кол-во запрашиваемых ресурсов
R’ <= R
R’ > N
В эт. сл-е если в модуль прих.запрос на кол-во ресурсов, то окл-во выд.ресурсов уст.ся неск-ко больше, чем число запрашив. => избыточное выделение ресурсов («-»)
Для улучшения орг-ии обмена осущ. не выделение, а резервирование рес-ов. Запрос доходит до супервизора и он в свою очередь дает указание зарезервировать столько рес-ов.(вниз по иерархии)
Инф. о том, сколько рес-ов мб. зарезервирована отправляется обратно супервизору. Далее обратно отправляется уже указание о выделении ресурсов. Излишние зарезерв. ресурсы освобождаются.
Потери: в изб. выделении ресурсов. При недостаточном выделении пост. отказы обработки исх. данных.
30. Распределение процессов по процессорам. Стохастические алгоритмы.
Если сложно подобрать адекватные параметры системы для ее корр работы, если нет инф для оптимизации, то она носит вероятностный характер.
инициатор-источних запроса / sender-initiated
ВМ ведет очередь готовых процессов. вводится пар. q – граничная длина очереди Q. Считается что пока Q < q работа происх. нормально. Иначе: принимается решение о отправки процесса в др. модуль. (Случ. выборка ВМ).
ВМ 2 смотрит Q2<q, и выделяет ресурс или отказывает. При отказе ВМ выбирает новый ВМ. После n неудач ВМ выполняет ресурс сам, или приостанавливает на нек.вр.
инициатор-получатель / receiver-initiated
Если Q < q, то модуль недогружен, и по принципу из 1) он запрашивает процесс с других модулей.
Равномерность загрузки примерно одинакова, но 2 считается предпочтительнее т.к. он выполняется при малой загрузке системы.
31. Формальные модели параллельных вычислений
Параллельное программирование представляет дополнительные источники сложности - необходимо явно управлять работой тысяч процессоров, координировать миллионы межпроцессорных взаимодействий. Для того решить задачу на параллельном компьютере, необходимо распределить вычисления между процессорами системы, так чтобы каждый процессор был занят решением части задачи. Кроме того, желательно, чтобы как можно меньший объем данных пересылался между процессорами, поскольку коммуникации значительно больше медленные операции, чем вычисления. Часто, возникают конфликты между степенью распараллеливания и объемом коммуникаций, то есть чем между большим числом процессоров распределена задача, тем больший объем данных необходимо пересылать между ними. Среда параллельного программирования должна обеспечивать адекватное управление распределением и коммуникациями данных.
Из-за сложности параллельных компьютеров и их существенного отличия от традиционных однопроцессорных компьютеров нельзя просто воспользоваться традиционными языками программирования и ожидать получения хорошей производительности. Рассмотрим основные модели параллельного программирования, их абстракции адекватные и полезные в параллельном программировании:
1) Процесс/канал (Process/Channel)
В этой модели программы состоят из одного или более процессов, распределенных по процессорам. Процессы выполняются одновременно, их число может измениться в течение времени выполнения программы. Процессы обмениваются данными через каналы, которые представляют собой однонаправленные коммуникационные линии, соединяющие только два процесса. Каналы можно создавать и удалять.
2) Обмен сообщениями (Message Passing)
В этой модели программы, возможно различные, написанные на традиционном последовательном языке исполняются процессорами компьютера. Каждая программа имеют доступ к памяти исполняющего е§ процессора. Программы обмениваются между собой данными, используя подпрограммы приема/передачи данных некоторой коммуникационной системы. Программы, использующие обмен сообщениями, могут выполняться только на MIMD компьютерах.
3) Параллелизм данных (Data Parallel)
В этой модели единственная программа задает распределение данных между всеми процессорами компьютера и операции над ними. Распределяемыми данными обычно являются массивы. Как правило, языки программирования, поддерживающие данную модель, допускают операции над массивами, позволяют использовать в выражениях целые массивы, вырезки из массивов. Распараллеливание операций над массивами, циклов обработки массивов позволяет увеличить производительность программы. Компилятор отвечает за генерацию кода, осуществляющего распределение элементов массивов и вычислений между процессорами. Каждый процессор отвечает за то подмножество элементов массива, которое расположено в его локальной памяти. Программы с параллелизмом данных могут быть оттранслированы и исполнены как на MIMD, так и на SIMD компьютерах.
4)Общей памяти (Shared Memory)
В этой модели все процессы совместно используют общее адресное пространство. Процессы асинхронно обращаются к общей памяти как с запросами на чтение, так и с запросами на запись, что создает проблемы при выборе момента, когда можно будет поместить данные в память, когда можно будет удалить их. Для управления доступом к общей памяти используются стандартные механизмы синхронизации - семафоры и блокировки процессов.