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