Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pp_kr1.doc
Скачиваний:
13
Добавлен:
13.11.2019
Размер:
915.46 Кб
Скачать

10, 15. Проблемы параллельной обработки данных.

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

  • Разработка параллельных алгоритмов, которые существенно сложнее обычных последовательных. Как правило, даже разрабатывают сначала последовательный алгоритм, а затем адаптирую к параллельному варианту.

  • Оценка эффективности параллельных алгоритмов. Существуют специальные программы, которые на каждом этапе предсказывают возможную эффективность.

  • Существуют проблемы синхронизации и проблемы взаимных блокировок.

Параллельную модель программирования характеризуют:

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

  • применение специальных приемов и инструментов программирования;

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

  • проблемы с переносимостью программ.

Требования к параллельным программам:

  • достаточная степень параллелизма;

  • хорошая масштабируемость;

  • детерминизм;

  • эффективность.

Повышенная трудоёмкость параллельного программирования связана с тем, что программист

должен заботиться:

  • об управлении работой множества процессов;

  • об организации межпроцессных пересылок данных;

  • о вероятности тупиковых ситуаций (взаимных блокировках);

  • о нелокальном и динамическом характере ошибок;

  • о возможной утрате детерминизма («гонки за данными»);

  • о масштабируемости;

  • о сбалансированной загрузке вычислительных узлов.

  1. Метод параллелепипедов.

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

ПРИМЕР:

DO 2 I=1,15

X(I)=X(G*I-27)

2 CONTINUE

В этом примере рассматривается одномерный случай пространства итераций, и в результате параллельный счет осуществляется для точек, принадлежащий отрезку прямой длиной = 4.

DO 2 I=1, 4

DO 2 CONC FOR ALL J { 4*(I-1) ≤ J ≤ MIN {4*I,15} }

X(I)=X(G*I-27)

2 CONTINUE

Общая постановка задачи.

Пусть I={I1,I2,…,In} – исходное пространство итераций. Требуется найти такие целые числа, P1,P2,…,Pn, называемые ребрами параллелепипеда, при которых исходные конструкции вида

DO 1 I1=1,R1

DO 1 I2=1,R2

……

DO 1 In=1,Rn

<ТЕЛО ЦИКЛА>

1 CONTINUE

ставится в соответствие эквивалентная конструкция вида

DO 2 CONC FOR ALL J {1,N}

DO 2 Kj=1, Pj

DO 2 I1=K1, R1, P1

DO 2 I2=K2, R2, P2

……

DO 2 In=Kn, Rn, Pn

<ТЕЛО ЦИКЛА>

2 CONTINUE

Искомая конструкция создает для каждого набора Ki…Kn параллельную ветвь, представляющую собой вложенный цикл с шагами исполнения P1 ….Pn. (1≤ Kj≤ Pj)

Для эквивалентности исходного и полученного цикла достаточно, чтобы в каждом из P1*P2…*Pn параллелепипедов не содержалось конкуренционно зависимых итераций, а так же порядок выполнения итераций группами, состоящими из параллелепипедов, был таков, чтобы все использования выполнялись после соответствующих генераций.

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

Если не требовать выполнения условия прямоугольности параллелепипедов, то этот метод является естественным методом гиперплоскостей (гиперплоскость получается как параллелепипед, одна из сторон которого имеет длину =1 , а все остальные совпадают с границей Rk).

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

Для мин. времени выполнения результирующего цикла требуется, чтобы V пар-да был максимальный. Т.е. задача сводится к задаче целочисленного линейного программирования (решается в случае с линейными индексными выражениями).

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