1 / 21

Гибридная модель параллельного программирования DVM / OpenMP

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

tender
Download Presentation

Гибридная модель параллельного программирования DVM / OpenMP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 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 • 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 • ENDDO • 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 • 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 • ENDDO • ENDDO • C$OMP END PARALLEL • END В.Бахтин

  5. 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 • 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 • ENDDO • 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 ENDDO ENDDO END В.Бахтин

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

  10. t2 t3 t4 t5 t6 t7 t2 t3 t4 t5 t6 t7 t8 t3 t4 t5 t6 t7 t8 Конвейерный параллелизм( dvm run 3 1 sor ) j i t1 p0 p1 t9 p2 В.Бахтин

  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 DO SCHEDULE (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 ENDDO !$OMP END PARALLEL ENDDO END В.Бахтин

  12. Конвейерный параллелизм t0 t1 t2 t3 Нить 0 t1 t2 t3 t4 Нить 1 t2 t3 t4 t5 Нить 2 t3 t4 t5 t6 Нить 3 В.Бахтин

  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 DO SCHEDULE (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 ENDDO !$OMP END PARALLEL ENDDO END В.Бахтин

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

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

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

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

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

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

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

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

More Related