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

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



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

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

Гибридная модель параллельного программирования 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 В.Бахтин Гибридный подход MPI/OpenMP Данные Core Данные Вычисления Core … Узел 0 OpenMP Core Данные Вычисления Core … Узел N OpenMP MPI

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

Алгоритм Якоби на языке 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 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 END

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 !$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 !$OMPEND PARALLEL END

Distribution of array A [8][8]

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)

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

CCopying shadow elements of array A from Cneighbouring 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

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 C$OMP END PARALLEL call MPI_Finalize(ierr) END программисту надо знать и уметь использовать две разные модели параллелизма и разные инструментальные средства

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

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

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

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 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

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

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

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

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

Тест LU-MZ (класс A) на IBM eServer pSeries 690 Regatta DVMMPI

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

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

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

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