Гибридная модель параллельного программирования DVM/OpenMP Бахтин В.А. ИПМ им.М.В.Келдыша РАН г. Москва, 20 марта 2008 г.

Презентация:



Advertisements
Похожие презентации
Система автоматизации распараллеливания: DVM-эксперт Блюменберг Э.П. 528 Научный руководитель: профессор В.А. Крюков.
Advertisements

1 Система автоматизации распараллеливания. Отображение на SMP-кластер. Автор: Картавец Евгений Олегович Научные руководители: д.ф.-м.н. Крюков Виктор Алексеевич.
Система автоматизации распараллеливания: DVM-эксперт Студент 528 группы Нгуен Минь Дык Научный руководитель: Профессор, д. ф.-м. н. Крюков Виктор Алексеевич.
Методика распараллеливания программ в модели DVM Институт прикладной математики им. М.В.Келдыша РАН
МГУ им. М.В. Ломоносова, Москва, 21 октября 2011г. КОНСОРЦИУМ УНИВЕРСИТЕТОВ РОССИИ Курс: «Технология параллельного программирования OpenMP» Лабораторная.
Fortan OpenMP/DVM - язык параллельного программирования для кластеров В.А. Бахтин, Н.А. Коновалов, В.А. Крюков, Н.В. Поддерюгина Институт прикладной математики.
Большая вычислительная задача Математическая модель (система УРЧП) в подпространстве R 3 t Дискретизация УРЧП - система линейных и нелинейных уравнений.
Гибридная модель параллельного программирования DVM/OpenMP Бахтин В.А. ИПМ им.М.В.Келдыша РАН г. Москва, 5 февраля 2008 г.
Модель параллелизма по данным и управлению. DVM Эта модель (1993 г.), положенная в основу языков параллельного программирования Фортран-DVM и Си- DVM,
Система автоматизации распараллеливания: отображение на мультипроцессор Выполнил: студент 528 группы Лойко Михаил Юрьевич Научный руководитель: профессор,
Многопоточное программирование в OpenMP Киреев Сергей ИВМиМГ.
Интернет Университет Суперкомпьютерных технологий Система поддержки выполнения OpenMP- программ. Переменные окружения, управляющие выполнением OpenMP-
Интернет Университет Суперкомпьютерных технологий Отладка эффективности OpenMP- программ. Учебный курс Параллельное программирование с OpenMP Бахтин В.А.,
Отладка эффективности OpenMP- программ. Параллельное программирование с OpenMP Бахтин Владимир Александрович Ассистент кафедры системного программированния.
Параллельное программирование с использованием технологии OpenMP Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Томский политехнический университет.
Параллельное программирование с использованием технологии OpenMP Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 2 Томский политехнический.
OpenMP. Различие между тредами и процессами ПроцессыТреды.
Наиболее часто встречаемые ошибки в OpenMP-программах. Функциональная отладка OpenMP-программ Технология параллельного программирования OpenMP Бахтин Владимир.
Система программирования DVM Н.А.Коновалов, В.А.Крюков Институт прикладной математики им. М.В. Келдыша РАН, г. Москва
Наиболее часто встречаемые ошибки в OpenMP-программах. Функциональная отладка OpenMP-программ Параллельное программирование с OpenMP Бахтин Владимир Александрович.
Транксрипт:

Гибридная модель параллельного программирования DVM/OpenMP Бахтин В.А. ИПМ им.М.В.Келдыша РАН г. Москва, 20 марта 2008 г.

2 В.Бахтин DVM/OpenMP – гибридная модель программирования высокого уровня Данные Core Данные Вычисления Core … Узел 0 OpenMP Core Данные Вычисления Core … Узел N OpenMP DVM

PROGRAM JAC_OpenMP_DVM PARAMETER (L=8, ITMAX=20) REAL A(L,L), B(L,L) CDVM$ DISTRIBUTE ( BLOCK, BLOCK) :: A CDVM$ ALIGN B(I,J) WITH A(I,J) C$OMP PARALLEL SHARED(A,B) PRIVATE (I,J,ITMAX) C$OMP SINGLE PRINT *, '********** TEST_JACOBI ********** C$OMP END SINGLE DO IT = 1, ITMAX CDVM$ PARALLEL (J,I) ON A(I, J) C$OMP DO DO J = 2, L-1 DO I = 2, L-1 A(I, J) = B(I, J) ENDDO CDVM$ PARALLEL (J,I) ON B(I, J), SHADOW_RENEW (A) C$OMP DO DO J = 2, L-1 DO I = 2, L-1 B(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + + A(I, J+1)) / 4 ENDDO C$OMP END PARALLEL END

В.Бахтин4 PROGRAM JAC_OpenMP_DVM PARAMETER (L=8, ITMAX=20) REAL A(L,L), B(L,L) CDVM$ DISTRIBUTE ( BLOCK, BLOCK) :: A CDVM$ ALIGN B(I,J) WITH A(I,J) PRINT *, '********** TEST_JACOBI ********** DO IT = 1, ITMAX CDVM$ PARALLEL (J,I) ON A(I, J) C$OMP PARALLEL DO SHARED (A,B), PRIVATE(I,J) DO J = 2, L-1 DO I = 2, L-1 A(I, J) = B(I, J) ENDDO CDVM$ PARALLEL (J,I) ON B(I, J), SHADOW_RENEW (A) C$OMP PARALLEL DO SHARED (A,B), PRIVATE(I,J) DO J = 2, L-1 DO I = 2, L-1 B(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + + A(I, J+1)) / 4 ENDDO C$OMP END PARALLEL END

PROGRAM JAC_OpenMP_DVM PARAMETER (L=8, ITMAX=20) REAL A(L,L), B(L,L) CDVM$ DISTRIBUTE ( BLOCK, BLOCK) :: A CDVM$ ALIGN B(I,J) WITH A(I,J) PRINT *, '********** TEST_JACOBI **********' C$OMP PARALLEL SHARED(A,B) PRIVATE (I,J,IT) DO IT = 1, ITMAX CDVM$ PARALLEL (J,I) ON A(I, J) C$OMP DO DO J = 2, L-1 DO I = 2, L-1 A(I, J) = B(I, J) ENDDO CDVM$ PARALLEL (J,I) ON B(I, J), SHADOW_RENEW (A) C$OMP DO DO J = 2, L-1 DO I = 2, L-1 B(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + + A(I, J+1)) / 4 ENDDO C$OMP END PARALLEL END

6 В.Бахтин DVM/OpenMP – гибридная модель программирования высокого уровня В модели DVM/OpenMP можно описать следующие уровни параллелизма программы: Параллелизм распределенных задач, позволяющий отобразить параллельно выполняющиеся задачи на непересекающиеся многомерные секции узлов. Параллелизм распределенных многомерных циклов, витки которых распределяются между узлами многомерной секции. Параллелизм конструкций разделения работы OpenMP (циклы и секции). Эти конструкции могут быть в произвольном порядке вложены друг в друга.

7 В.Бахтин Преимущества OpenMP/DVM Близость моделей OpenMP и DVM, что упрощает их совместное использование Получение гибких программ, способных настраиваться на неоднородность узлов SMP- кластера Возможность использования параллельной программы как последовательной, как OpenMP- программы, как DVM-программы, и как DVM/OpenMP -программы.

В.Бахтин8 PROGRAM SOR_DVM PARAMETER (L=8, ITMAX=20) REAL A(L,L) CDVM$ DISTRIBUTE ( BLOCK, BLOCK) :: A PRINT *, '********** TEST_SOR ********** DO IT = 1, ITMAX CDVM$ PARALLEL ( J, I) ON A( I, J), ACROSS (A(1:1,1:1)) DO J = 2, L-1 DO I = 2, L-1 A(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + A(I, J+1)) / 4 ENDDO END

В.Бахтин9 Параллелизм по гиперплоскостям ( dvm run 4 4 sor ) j i t1 t2 t3

В.Бахтин10 Конвейерный параллелизм ( dvm run 3 1 sor ) p0 p1 p2 j i t1 t2 t2t2 t3 t3t3 t3t3 t4t4 t4t4 t4t4 t5t5 t5t5 t5t5 t6t6 t6t6 t6t6 t7t7 t7t7 t7t7 t8t8 t8t8 t9t9

В.Бахтин11 PROGRAM SOR_OpenMP PARAMETER (L=8, ITMAX=20) REAL A(L,L) PRINT *, '********** TEST_SOR ********** DO IT = 1, ITMAX !$OMP PARALLEL SHARED(A,B) PRIVATE(I,J,NEWJ,IAM) !$ IAM = OMP_GET_THREAD_NUM () DO NEWJ = 2, L-1 + OMP_GET_NUM_THREADS () – 1 J = NEWJ - IAM !$OMP DOSCHEDULE (STATIC) DO I = 2, L-1 !$ IF (J.LT. 2.OR. J.GT. L - 1) THEN !$ CYCLE !$ ENDIF A(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + A(I, J+1)) / 4 ENDDO !$OMP END PARALLEL ENDDO END

В.Бахтин12 Конвейерный параллелизм Нить 0 t0t0t1t1 t1t1 t2t2 t2t2 t2t2 t3t3 t3t3 t3t3 Нить 2 Нить 1 Нить 3 t4t4 t4t4t5t5 t3t3t4t4t5t5t6t6

В.Бахтин13 PROGRAM SOR_OpenMPDVM PARAMETER (L=8, ITMAX=20) REAL A(L,L) !DVM$ DISTRIBUTE ( BLOCK, BLOCK) :: A PRINT *, '********** TEST_SOR ********** DO IT = 1, ITMAX !$OMP PARALLEL SHARED(A,B) PRIVATE(I,J,NEWJ,IAM) !$ IAM = OMP_GET_THREAD_NUM () ! DVM$ PARALLEL ( NEWJ, I) ON A( I, NEWJ-IAM), !DVM$* ACROSS (A(1:1,1:1)) DO NEWJ = 2, L-1 + OMP_GET_NUM_THREADS () – 1 J = NEWJ - IAM !$OMP DOSCHEDULE (STATIC) DO I = 2, L-1 !$ IF (J.LT. 2.OR. J.GT. L - 1) THEN !$ CYCLE !$ ENDIF A(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + A(I, J+1)) / 4 ENDDO !$OMP END PARALLEL ENDDO END

Методика и средства отладки DVM-программ г. Москва, 20 марта 2008 г.

15 В.Бахтин Функциональная отладка DVM-программ Используется следующая методика поэтапной отладки программ: На первом этапе программа отлаживается на рабочей станции как последовательная программа, используя обычные методы и средства отладки На втором этапе программа выполняется на той же рабочей станции в специальном режиме проверки распараллеливающих указаний

16 В.Бахтин Функциональная отладка DVM-программ На третьем этапе программа выполняется на рабочей станции или на параллельной машине в специальном режиме, когда промежуточные результаты параллельного выполнения сравниваются с эталонными результатами (например, результатами последовательного выполнения)

17 В.Бахтин Динамический контроль Выход за пределы массива Чтение неинициализированных переменных Необъявленная зависимость по данным в параллельной конструкции Модификация в параллельной ветви размноженных переменных (не редукционных и не приватных) Необъявленный доступ к нелокальным данным

18 В.Бахтин Динамический контроль Чтение теневых граней распределенного массива до завершения операции их обновления Использование редукционных переменных до завершения операции асинхронной редукции

19 В.Бахтин Недостатки динамического контроля Накладные расходы (память, время) Отсутствие ошибок при динамическом контроле не гарантирует правильной работы параллельной программы по следующим причинам

20 В.Бахтин Недостатки динамического контроля динамический контроль не проверяет правильность описания редукционных операций; источником ошибок могут быть процедуры, вызываемые из DVM-программ, но написанные на других языках и не подлежащие динамическому контролю; отлаженная последовательная программа может содержать ошибки, которые не проявились при ее последовательном выполнении, но могут проявиться при параллельном выполнении.

21 В.Бахтин Сравнение результатов Получение эталонной трассировки - управление объемом при компиляции, через параметры запуска, с помощью файла конфигурации Особенности сравнения (редукция, учет правила собственных вычислений, точность) Режим проверки указаний о редукционных операциях