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

20. Система параллельного программирования dvm(Distributed Virtual Machine).

При параллельном программировании разработчик, кроме составления алгоритма решения задачи, должен дополнительно: 1)Определить возможность параллельного выполнения отельных частей программы; 2)Распределить выделенные части алгоритма по отдельным параллельным ветвям с учетом архитектуры ВС; 3)Обеспечить синхронизацию параллельных ветвей алгоритма; 4)Распределить исходные данные и промежуточные результаты между параллельными ветвями алгоритма; 5)Защитить параллельные части программы от взаимных блокировок; 6)На каждом этапе проектирования алгоритма оценивать его эффективность.

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

Наиболее распространенные системы пар. программирования: PVM, MPI, DVM

DVM Модели параллелизма: 1) по данным; 2) параллелизм задач. Каждый экземпляр программы обрабатывает свое подмножество данных. Такой подход наиболее оправдан при распараллеливании гнездовых циклических алгоритмов.

Преимущества системы DVM: 1)Простота разработки параллельных программ; 2)Мобильность системы; 3)Высокая эффективность выполнения программ; 4)Возможность композиции параллельных приложений из нескольких различных модулей; 5)Единая модель параллелизма для языков: Cи-DVM и Фортран-DVM; 6)В системе DVM имеется возможность на каждом этапе проектирования оценивать эффективность будущей параллельной программы. Для этого в состав системы включен специальный модуль, называемый предиктором (предсказатель).

ГЛАВНОЕ ПРЕИМУЩЕСТВО: Программа на языке Cи-DVM или Фортран-DVM может выполняться и как в обычном (последовательном) режиме, и как параллельная программа → благодаря тому, что все специальные директивы для параллельного выполнения записываются в виде комментариев на соответствующем языке (Си или Фортран), и таким образом, не воспринимаются стандартным компилятором.

При использовании системы DVM программисту предоставляются следующие возможности спецификации параллельного выполнения программы:

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

  • Распределение витков циклов между процессорами.

  • Спецификация параллельно выполняющихся секций программы (параллелизм задач).

  • Организация эффективного доступа удаленным данным.

  • Организация эффективного выполнения редукционных операций.

Существуют следующие возможности повышения эффективности DVM программ:

1)Использование групповых асинхронных взаимодействий процессоров (одновременное выполнение нескольких редукций для нескольких массивов); 2)Возможность перекрытия простоев процессоров при групповых асинхронных взаимодействиях с вычислениями; 3)Автоматическое изменение порядка выполнения витков цикла для опережающих вычислений и рассылок полученных данных; 4)DVM программа динамически настраивается на параметры приложения, т.е. на количество и размер массивов данных

В состав системы DVM входят следующие компоненты: 1)Компилятор Фортран-DVM; 2)Компилятор Си-DVM; 3)Библиотека Lib-DVM; 4)DVM-отладчик; 5)Предиктор (предсказатель производительности); 6)Анализатор производительности DVM-программы.

Библиотека Lib-DVM поддерживает выполнение DVM-программы, используя коммуникационные системы MPI и PVM. Отладчик обеспечивает выполнение программы в специальном режиме DVM директив и выполнение прог. на пар. ВС в специальном режиме, в котором все промежуточные рез-ты сравниваются с рез-тами последовательного выполнения. Анализатор производительности определяет характеристики эффективности параллельной программы, предоставляя пользователю информацию о производительности всей DVM-системы и отдельных ее частей.

Пример DVM-программы. Решение системы линейных уравнений методом Гаусса.

PROGRAMM GAUSS

C решение системы А*X + B

PARAMETER (N-100)

REAL A(N, N+1), X(N)

C A: матрица коэффициентов (N,N+1)

C вектор правых частей в N+1 столбцах

С X: вектор неизвестных

* DVM$ DISTRIBUTE A(BLOCK, *)

* DVM$ ALIGN X(I) WITH A(I,N+1)

С инициализация

* DVM$ PARALLEL(I) ON A(I,*)

DO 100 I=1,N

DO 100 J=1 ,N +1

IF (I.EQ.N+1) THEN

A(I,J)=2.0

ELSEIF (J.EQ.N+1) THEN

A(I,J)=0.0

ENDIF

ENDIF

100 CONTINUE

C исключение

DO 1 I=1,N

C I-я строка матрицы А буферизутся

С перед обработкой I-го столбца у-ния

С ссылки A(I,K), A(I,J) заменяются

С ссылками на буфер

*DVM$ PARALLEL(Y) ON A(J,*), REMOTE_ACCESS(A(I,:))

DO 5 J=I+1,N

DO 5 K=I+1 ,N +1

A(I,K)=A(I,K)- A (I,J)+A(I,K)/A(I,I)

5 CONTINUE

1 CONTINUE

C сначала вычисляется X(N)

X(N) = A(N,N+1) / A(N,N)

C нахождение X(N-1), X(N-2)

С обратной подстановкой

DO 6 J=N-1,1,-1

C (J+1) эл-т массива X буферизуется

С перед обработкой J-го уровня

*DVM$ PARALLEL(Y) ON A(I,*), REMOTE_ACCESS(X(J+1))

DO 7 I=1,J

A(I,N+1) = A(I,N+1) - A(I,=J+1) * X(J+1)

7 CONTINUE

8 CONTINUE

PRINT *,X

END

Distribute (block, *) – указывает на то, что двум массивам A д.б. равномерно распределено по 1-му измерению на процессоры системы. * указывает на то, что размерность помещается на все процессоры целиком. ALIGN – указывает на необходимость выравнивания X(I) по массиву (I, N+1), те. Соответствующие элементы указанных массивов д.б. размещены в адресном пространстве одного и того же процессора. PARALLEL – указывает на необходимость распределения витков цикла по I между процессорами в соответствии с распределением массива A. REMOTE-ACCESS – указывает на необходимость распределения витков цикла по I между процессорами в соответствии с распределением массива (A (J, *)) причем в цикле будут использованы удаленные переменные, размещенные на другом процессоре, ко-рые перед выполнением цикла перемещаются в специальный буфер.

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