1 / 28

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

Гибридная модель параллельного программирования DVM / OpenMP. Бахтин В.А. ИПМ им.М.В.Келдыша РАН. г. Москва, 5 февраля 2008 г. Содержание. Тенденции развития суперкомпьютеров и кластеров = > MPI/OpenMP DVM/OpenMP – гибридная модель программирования высокого уровня

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 Бахтин В.А. ИПМ им.М.В.Келдыша РАН г. Москва, 5 февраля 2008 г.

  2. Содержание • Тенденции развития суперкомпьютеров и кластеров => MPI/OpenMP • DVM/OpenMP – гибридная модель программирования высокого уровня • Компиляция Fortran DVM/OpenMP программ • Использование языка Fortran DVM/OpenMP для программирования реальных приложений В.Бахтин

  3. Тенденции развития суперкомпьютеров и кластеров • Темпы уменьшения латентности памяти гораздо ниже темпов ускорения процессоров + прогресс в технологии изготовления кристаллов => CMT(Chip MultiThreading) • Опережающий рост потребления энергии при росте тактовой частоты + прогресс в технологии изготовления кристаллов => CMP (Chip MultiProcessing, многоядерность) • И то и другое требует более глубокого распараллеливания для эффективного использования аппаратуры => OpenMP в узлах В.Бахтин

  4. Достоинства использования OpenMP вместо MPI • Возможность инкрементального распараллеливания • Упрощение программирования и эффективность на нерегулярных вычислениях, проводимых над общими данными • Ликвидация или сокращение дублирования данных в адресных пространствах MPI-процессов В.Бахтин

  5. Преимущества OpenMP для многоядерных процессоров • Объемы оперативной памяти и кэшпамяти, приходящиеся в среднем на одно ядро, будут сокращаться – отсюда преимущество нитей OpenMP перед процессами MPI • Ядра используют общую Кэш-память, что требуется учитывать при оптимизации программы В.Бахтин

  6. Причины использования гибридного подхода MPI/OpenMP • OpenMP рассчитан на мультипроцессоры и DSM-системы (системы с распределенной памятью, на которых смоделирована общая память) и не ориентирован на кластеры (Интеловская разработка OpenMP для кластеров не показала своей перспективности) • На DSM-системах большого размера (64 и выше), например SGI Altix, эффективность OpenMP-программ невысока (распределение данных и привязка вычислений к данным) В.Бахтин

  7. Данные Вычисления OpenMP Core Core Core Core Core Core Core Core … Узел 0 Гибридный подход MPI/OpenMP Данные MPI MPI Данные Вычисления OpenMP … Узел N В.Бахтин

  8. Достоинства использования OpenMP совместно с MPI • Упрощение программирования в том случае, когда в программе есть два уровня параллелизма – параллелизм между подзадачами и параллелизм внутри подзадачи (многоблочные методы). • Улучшение балансировки на многоблочных задачах при меньшей трудоемкости реализации еще одного уровня параллелизма В.Бахтин

  9. АлгоритмЯкоби на языке Fortran 77 PROGRAM JAC_F77 PARAMETER (L=8, ITMAX=20) REAL A(L,L), B(L,L) PRINT *, '********** TEST_JACOBI **********' DO IT = 1, ITMAX DO J = 2, L-1 DO I = 2, L-1 A(I, J) = B(I, J) ENDDO ENDDO 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 END

  10. PROGRAM JAC_OpenMP PARAMETER (L=8, ITMAX=20) REAL A(L,L), B(L,L) PRINT *, '********** TEST_JACOBI **********' !$OMP PARALLEL SHARED (A,B) DO IT = 1, ITMAX !$OMP DO DO J = 2, L-1 DO I = 2, L-1 A(I, J) = B(I, J) ENDDO ENDDO !$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 !$OMP END PARALLEL END

  11. Distribution of array A [8][8]

  12. PROGRAM JAC_MPI_OpenMP include 'mpif.h' integer me, nprocs PARAMETER (L=8, ITMAX=20, LC=2, LR=2) REAL A(0:L/LR+1,0:L/LC+1), B(L/LR,L/LC) C arrays A and B with block distribution integer dim(2), coords(2) logical isper(2) integer status(MPI_STATUS_SIZE,4), req(8), newcomm integer srow,lrow,nrow,scol,lcol,ncol integer pup,pdown,pleft,pright dim(1) = LR dim(2) = LC isper(1) = .false. isper(2) = .false. reor = .true. call MPI_Init( ierr ) call MPI_Comm_rank( mpi_comm_world, me, ierr ) call MPI_Comm_size( mpi_comm_world, nprocs, ierr) call MPI_Cart_create(mpi_comm_world,2,dim,isper, * .true., newcomm, ierr)

  13. call MPI_Cart_shift(newcomm,0,1,pup,pdown, ierr) call MPI_Cart_shift(newcomm,1,1,pleft,pright, ierr) call MPI_Comm_rank (newcomm, me, ierr) call MPI_Cart_coords(newcomm,me,2,coords, ierr) C rows of matrix I have to process srow = (coords(1) * L) / dim(1) lrow = (((coords(1) + 1) * L) / dim(1))-1 nrow = lrow - srow + 1 C colomns of matrix I have to process scol = (coords(2) * L) / dim(2) lcol = (((coords(2) + 1) * L) / dim(2))-1 ncol = lcol - scol + 1 call MPI_Type_vector(ncol,1,nrow+2,MPI_DOUBLE_PRECISION, * vectype, ierr) call MPI_Type_commit(vectype, ierr)    IF (me .eq. 0) PRINT *, '***** TEST_JACOBI *******' C$OMP PARALLEL SHARED (A,B) DO IT = 1, ITMAX C$OMP DO DO J = 1, ncol DO I = 1, nrow A(I, J) = B(I, J) ENDDO ENDDO

  14. C Copying shadow elements of array A from C neighbouring nodes before loop execution C$OMP MASTER call MPI_Irecv(A(1,0),nrow,MPI_DOUBLE_PRECISION, * pleft, 1235, MPI_COMM_WORLD, req(1), ierr) call MPI_Isend(A(1,ncol),nrow,MPI_DOUBLE_PRECISION, * pright, 1235, MPI_COMM_WORLD,req(2), ierr) call MPI_Irecv(A(1,ncol+1),nrow,MPI_DOUBLE_PRECISION, * pright, 1236, MPI_COMM_WORLD, req(3), ierr) call MPI_Isend(A(1,1),nrow,MPI_DOUBLE_PRECISION, * pleft, 1236, MPI_COMM_WORLD,req(4), ierr) call MPI_Irecv(A(0,1),1,vectype, * pup, 1237, MPI_COMM_WORLD, req(5), ierr) call MPI_Isend(A(nrow,1),1,vectype, * pdown, 1237, MPI_COMM_WORLD,req(6), ierr) call MPI_Irecv(A(nrow+1,1),1,vectype, * pdown, 1238, MPI_COMM_WORLD, req(7), ierr) call MPI_Isend(A(1,1),1,vectype, * pup, 1238, MPI_COMM_WORLD,req(8), ierr) call MPI_Waitall(8,req,status, ierr) C$OMP END MASTER C$OMP BARRIER

  15. C$OMP DO DO J = 2, ncol-1 DO I = 2, nrow-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 call MPI_Finalize(ierr) END программисту надо знать и уметь использовать две разные модели параллелизма и разные инструментальные средства

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

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

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

  19. 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) • 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

  20. Компиляция DVM/OpenMP программ Fortran DVM/OpenMP программа Fortran DVM компилятор Fortran DVM/OpenMP компилятор Fortran + обращения к LibDVM (MPI) Fortran OpenMP + обращения к LibDVM (MPI) Штатный Fortran компилятор В.Бахтин

  21. Компилятор Fortran DVM/OpenMP • Генерирует обращения к библиотеке LibDVM внутри монопольных секций • Корректирует OpenMP-директивы в программе (добавляются клаузы и директивы для служебных переменных) • Заменяетглобальные границы массивов на границы их локальных частей (в циклах с зависимостью) • Инструментирует OpenMP-директивы для функциональной отладки и отладки эффективности В.Бахтин

  22. Распараллеливание тестов NASA и реальных задач • BT3D Навье-Стокс, метод переменных направлений • LU 3D Навье-Стокс,метод верхней релаксации • SP 3D Навье-Стокс, Beam-Warning approximatefactorization • CONVDУравнение переноса в диффузионном приближении для расчета солнечной конвекции • DF3D6TДиффузионная нестационарная задача на гексагональной сетке В.Бахтин

  23. Тест SP-MZ (класс A) на IBM eServer pSeries 690 Regatta MPI DVM

  24. Тест LU-MZ (класс A) на IBM eServer pSeries 690 Regatta MPI DVM

  25. Тест BT-MZ (класс A) на IBM eServer pSeries 690 Regattaзоны от 13 x 13 x 16 и до 58 x 58 x 16 MPI DVM

  26. Расчет солнечной конвекции (задача С.Д. Устюгова) Считает трехмерную динамику и уравнение переноса в диффузионном приближении для расчета солнечной конвекции. 2-х процессорный сервер Intel Xeon Dual Core 3.2 GHz (128x128x64) В.Бахтин

  27. Расчет солнечной конвекции (задача С.Д. Устюгова) В задаче используется около 50 массивов размерности NX=1000, NY=1000, NZ=168; порядка 60-ти циклов, в 12-ти из которых, есть регулярная зависимость по данным. При запуске DVM- программы на 225 процессорах используются 4 ядра (по памяти). DVM/OpenMP-программа позволяет использовать все ресурсы на узле. МВС-50K (МСЦ РАН) В.Бахтин

  28. Автоматизация создания программ в модели DVM/OpenMP Два направления автоматизации • автоматизированное (с участием пользователя) преобразование последовательных программ в параллельные программы в модели DVM/OpenMP • дисциплина написания на языках последовательного программирования таких программ, которые могут быть автоматически (без участия пользователя) преобразованы в параллельные программы в модели DVM/OpenMP В.Бахтин

More Related