Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник лекций по предмету Методы Программирова...doc
Скачиваний:
43
Добавлен:
22.09.2019
Размер:
4.83 Mб
Скачать

Основные правила:

- Переменные, объявленные вне блока параллельного выполнения, будут общие

- Статические переменные тоже являются общими

- Автоматические переменные, объявленные внутри параллельного блока – индивидуальны

- Локальные переменные и формальные параметры функции, вызываемые внутри параллельного блока- индивидуальны.

Существуют опции директивы параллели:

- private – определяет список переменных, которые будут индивидуальны для потоков, выполненных параллельно

- firstprivate – инициализация индивидуальных переменных, которые получат значения, равные значению переменных в главном потоке, в момент вхождения в параллельный участок

-reduction (оператор: список)

reduction (+:t) – в конце параллельного блока (все значения индивидуальных переменных t будут суммироваться)

Синхронизация

Выполняется с помощью atomic.

Критические секции critical [] – секции с одним и тем же именем не могут выполняться одновременно.

Директива master выделяет действие, которое выполняется только главным потоком.

# pragma omp master

{<действие}

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

Псевдо-код:

#pragma omp parallel for

for (i=0; i<n; i++)

# pragma omp atomic

S+=a[i]*b[i];

return S;

Можно ускорить:

#pragma omp parallel for

reduction (+, S)

for (i=0; i<n; i++)

# pragma omp atomic

S+=a[i]*b[i];

return S;

Функция shedule позволяет задать несколько режимов:

- статическое распределение по данному количеству

- динамическое распределение (нагружать освободившиеся процессы)

Лекция 15

Обзор средств параллельного и распределенного программирования.

Технология DVM (Digital Virtual Machine)-выполнена институтом Прикладной математики Академии Наук.

Принципы реализации этой системы:

  1. Высокоуровневая модель выполнения программ;

  2. Спецификация параллельного программирования невидимы для обычных трансляторов;

  3. Модель языковых конструкций параллельного программирования близка к модели выполнения программы;

  4. Основная работа по выполнению программы реализуется системой DVM;

Система DVM базируется на библиотеке MPI, следовательно, переносимость относительно платформы. Синтаксис и семантика директив DVM практически совпадает с синтаксисом и семантикой языка Си.

Структурные особенности модели DVM – программ:

  1. Выполняется на виртуальной MPI – машине (но есть и реализации на PVM);

  2. Виртуальная многопроцессорная система представляется как многомерная решетка процессоров;

  3. При запуске выполнение программы начинается сразу на всех процессорах, при этом 1 процесс выполняет поток управления;

  4. Допускается иерархия распараллеливания (на верхнем уровне выполняются независимые по данным задачи, а на нижних- параллельные циклы. В конце ветвей или задач выполняется редукция);

  5. При входе в параллельный блок поток управления разбивается на несколько потоков;

  6. Все переменные репродуцируются по процессам и являются при этом локальными переменными;

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

Существует возможность отображения задач на секции решетки. Отображение может быть статическим или динамическим. Существуют различные режимы работы с данными. Доступно редуцирование.

Реализуется и используется система DVM на различных сетях: HP, IBM, SUN; OC: UNIX, Windows.

Документация: www.keldysh.ru/dvm

Язык mpC

Предназначен для организации вычислений на неоднородных сетях.

Характерные принципы:

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

  2. Синхронизация – основное средство.

Язык Occam

Минимальными средствами решена задача разработки системы программирования на транспьютерах.

Фирма INMOS – производитель транспьютеров. Базовые элементы: декларации и три процесса (присваивание, ввод, вывод) .Эти три процесса объединяются в реальные процессы с помощью конструкторов:

  • Последовательный – создает участки с последовательным выполнением

  • Параллельный

  • Защищенного взаимодействия

Язык CSP

Моделирование приложений. Все взаимодействуется в результате событий. События:

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

  • рекурсия участка программ

  • защищенный выбор (моделирование недетерминированного участка)

Язык Linda

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

Портфель задач. Задача – единица работы. Задача помещается в некий портфель, который разделяется процессами. Разделяется по следующей схеме:

  1. получить задачу

  2. проверить наличие задачи, если нет – завершить процесс

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

Для реализации: использование языка С с внедренным в него примитивами языка Linda.