Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы 2014.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.93 Mб
Скачать
  1. Вычисление параллельного префикса

i-й префикс – это какая-либо ассоциативная бинарная операция, выполняемая на элементах первых i процессоров. Для решения такого типа задач сначала необходимо получить:

1. операцию на первых двух элементах ;

2. - операция с участием трех процессоров;

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

24.2

. Основные технологии параллельного программирования

Начало создания технологии параллельного программирования в 90-е годы ХХ века. Сегодня существует более 100 технологий, среди них такие как НОРМА, Linda, Occam, OpenMP, DVM и др.

Требования для использования параллельных технологий:

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

  2. распределить данные по нескольким локальным памятям,

  3. согласовать распределенные данные с параллельностью вычислений.

Трудности реализации параллельных программ:

  • использование традиционных компиляторов;

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

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

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

  2. новые конструкции, то есть дополнительные служебные функции.

Технология OpenMP ориентирована на системы с общей памятью SMP. За основу при реализации берется последовательная программа, а для реализации параллельной программы используются специальные директивы.

А рхитектура программы следующая: Одна нить (thread) может быть разделена на несколько нитей, которые в последующем снова сводятся к одной. Одна и та же программа может быть выполнена как последовательно, так и параллельно. Общие переменные, используемые в программе всегда существуют в одном экземпляре. При этом переменные, используемые в отдельных секциях, могут быть локальными или разделяемыми.

О бщая идея технологии OpenMP заключается в том, что некоторые фрагменты текста программы можно объявлять параллельными.

! $OMP

! $OMP PARALLEL

<параллельный код программы>

! $OMP END PARALLEL

Для описания нитей используются директива THREAD.

Особенности OpenMP:

  1. параллельные секции могут быть вложенными друг в друга,

  2. число нитей параллельных секции можно менять при выполнении определенных условий,

  3. возможно распределение работы между нитями

  4. возможно распределение итераций по нитям с помощью директивы Шедьюла,

  5. возможна организация параллелизма на уровне независимых фрагментов,

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

Достоинства OpenMP:

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

  2. компилятор последовательной машины не замечает директивы, так как они написаны в комментариях,

  3. для специальных функции и переменных придуманы заглушки,

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

Технология DVM (Develop Virtual Machine).

DVM содержит 5 основных компонентов: компилятор; система поддержки выполнения параллельных программ; отладчик параллельных программ; анализатор эффективности программ; предсказатель производительности.

Основные принципы:

  • высокоуровневая модель выполнения программы

  • директивы или спецификации должны быть понятны для обычных компиляторов

  • основная работа по реализации модели должна быть выполнена динамически

Директивы формируются в виде строк комментариев

DVM $

! DVM $

C DVM $

DVM – это программа, которая выполняется на виртуальной многопроцессорной системе. Виртуальная машина – это машина с аппаратурой или программным обеспечением, которые предоставляются конкретному пользователю или конкретной программе – MPI-машина. В качестве аппаратуры используются многомерные линейки процессоров, число процессоров и способ их соединения задается непосредственно при запуске программы.

Используются два типа параллелизма:

  1. независимые задачи или ветви,

  2. в рамках каждой ветви допускаются параллельные циклы.

Все переменные программы размножаются по всем процессорам (на каждом процессоре создается своя копия).

Основные конструкции DVM.

Указанные элементы отображаются на определенную архитектуру.

PARALLEL – распараллеливание

MAP – отображение задач на конкретные массивы

DISTRIBUTE – распределение массивов (определение их типов, отображение)

С DVM $

DISTRIBUTE

<имя массива> формат [onto T(n)]

Поле формат может принимать одно из нескольких значений:

bLock – отображение равными блоками

Onto – отображение массива на ту часть линейки процессоров, но которую отображена n-ая задача вектора задач Т.

Данные, над которыми выполняется операция по технологии DVM, могут быть различных типов:

  1. общие данные (данные вычисляются на одних процессорах, а используются на других) – соседние, удаленные, редукционные (глобальные операции),

частные данные.

24.3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]