Top Banner
Разработка приложений в Разработка приложений в среде среде ParJava ParJava В.В.Бабкова, М.Д.Калугин V Всероссийская межвузовская конференция молодых ученых
25

Разработка приложений в среде ParJava

Jan 15, 2016

Download

Documents

vondra

Разработка приложений в среде ParJava. В.В.Бабкова, М.Д.Калугин. V Всероссийская межвузовская конференция молодых ученых. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Разработка приложений в среде  ParJava

Разработка приложений в среде Разработка приложений в среде ParJavaParJava

В.В.Бабкова, М.Д.Калугин

V Всероссийская межвузовская конференция молодых ученых

Page 2: Разработка приложений в среде  ParJava

Исследование и оптимизацияИсследование и оптимизация процесса процесса составлениясоставления масштабируемых параллельных масштабируемых параллельных программ решения программ решения прикладных прикладных задач в среде задач в среде ParJava. ParJava.

Применение разработанной технологии для Применение разработанной технологии для разработки реального приложенияразработки реального приложения..

Цель работыЦель работы

Page 3: Разработка приложений в среде  ParJava

В настоящее время фактическим языковым стандартом разработки промышленных прикладных программ является использование одного из языков программирования высокого уровня (Fortran, C/C++) с использованием MPI (распределенная память) или OpenMP (общая память)

Существуют параллельные расширения языков высокого уровня (обращения к коммуникационным функциям генерируются компилятором)(HPF, Cilk (MIT), Unified Parallel C (Java version – Titanium) (Berkeley), etc.)Однако эти проекты в лучшем случае исследовательские

Page 4: Разработка приложений в среде  ParJava

// MPI вариант while ((iterN--) != 0) { for(i = 2; i <= N; i++) for(j = ((myidy == 0) ? 2:1); j < countsy[myidy] - 1; j++) A[i][j] = (localA[i][j+1]+ 2 * localA[i][j] + localA[i][j-1])*0.25 + (B[i+1][j]+2 * B[i][j] + B[i-1][j])*0.25;   for(i = 2; i <= N; i++) for(j = ((myidy == 0) ? 2:0); j < countsy[myidy] - 1; j++) localA[i][j] = A[i][j];  if (myidy != 0) { for (i = 0; i < N; i++) upOut[i] = localA[i][1]; MPI_Send(upOut, N, MPI_DOUBLE, myidy - 1, TAG, MPI_COMM_WORLD); } if (myidy != sizey - 1) { MPI_Recv(downIn, N, MPI_DOUBLE, myidy + 1, TAG, MPI_COMM_WORLD, &Status); for (i = 0; i < N; i++) downOut[i] = localA[i][countsy[myidy] - 2]; MPI_Send(downOut, N, MPI_DOUBLE, myidy + 1, TAG,MPI_COMM_WORLD ); } if (myidy != 0) { MPI_Recv(upIn, N, MPI_DOUBLE, myidy - 1, TAG, MPI_COMM_WORLD, &Status); for (i = 0; i < N; i++) localA[i][0] = upIn[i]; } if (myidy != sizey - 1) { for (i = 0; i < N; i++) localA[i][countsy[myidy] - 1] = downIn[i]; }

// HPF вариантFORALL (J = 2:N, I=2:N) && A(I,J)=(A(I,J+1)+2*A(I,J)+A(I,J-1))*0.25 && + (B(I+1,J)+2*B(I,J)+B(I-1,J))*0.25

Page 5: Разработка приложений в среде  ParJava

Почему Почему HPFHPF не не оправдал надеждоправдал надежд

Несколько причин: • отсутствие компиляторных технологий, позволяющих генерировать эффективный параллельный код, • отсутствие гибких стратегий распределения данных по узлам, • отсутствие инструментария и др.

Ken Kennedy, Charles Koelbel, Hans Zima.Ken Kennedy, Charles Koelbel, Hans Zima. “The Rise and Fall of “The Rise and Fall of High Performance Fortran: An Historical Object Lesson”// High Performance Fortran: An Historical Object Lesson”// Proceedings of the third ACM SIGPLAN conference on History of Proceedings of the third ACM SIGPLAN conference on History of programming languagesprogramming languages, , San Diego, CaliforniaSan Diego, California, , Pages: 7-1 - 7-Pages: 7-1 - 7-2222, , 20072007..

Page 6: Разработка приложений в среде  ParJava

Два направления исследований:

- Языки высокого уровня (надежды

возлагаются на языки нового поколения

Fortress (Sun), Chapel (Cray), X10 (IBM))

- Технологии и инструментальные средства,

поддерживающие программирование с

использованием MPI

Page 7: Разработка приложений в среде  ParJava

Проект ParJava направлен на исследование и разработку технологического процесса (workflow) создания параллельных MPI-программ, и поддерживающих этот процесс инструментальных средств

При этом предполагалось, что значительная часть процесса разработки будет перенесена на инструментальный компьютер за счет использования моделей параллельных программ

Page 8: Разработка приложений в среде  ParJava

Процесс написания и поддержки масштабируемой параллельной Процесс написания и поддержки масштабируемой параллельной программы можно разбить на следующие этапыпрограммы можно разбить на следующие этапы

ЭтапыЭтапы Инструменты Инструменты ParJavaParJava

Реализация последовательной программы

Составление профиля

Выявление циклов для распараллеливания

Оценка максимально возможного ускорения

Профилировщик (построение графика масштабируемости)

Обнаружение зависимостей по данным Омега-тест

Устранение зависимостей по данным

Оптимальное разбиение массива (минимизация пересылок) и балансировка нагрузки

Целочисленное программирование (метод brunch-and-cut)

Выбор операций пересылок (какие и где) Интерпретатор

Оценка границ области масштабируемости и времени счета на реальных данных

Интерпретатор

Для больших программ расстановка контрольных точек

Интерпретатор и механизм контрольных точек

Page 9: Разработка приложений в среде  ParJava

Разбиение массиваРазбиение массиваКоличество процессов P=X*Y*ZОбщий объем пересылок

V=2*((X-1)+(Y-1)+(Z-1))*N2

8 процессов: V одном = 14N2 > Vдвум = 8N2 > V трех = 6N2

N

N

128 процессов: V одном = 254N2 > Vдвум = 44N2 > V трех = 26N2

При разбиении стремимся к тому, чтобы X+Y+Z была минимальной

Page 10: Разработка приложений в среде  ParJava

Модельный пример пересылки данныхМодельный пример пересылки данных //sending Send Recv //calculating for (i = beg_i; i < end_i; i++) for (j = 0; j < N; j++) B[i][j] = f(A[i][j]);

//sending ISend IRecv //calculating for (i = 1; i < N - 1; i++) for (j = 0; j < N; j++) B[i][j] = f(A[i][j]); //waiting Wait(); //calculating last columns if (myid != 0) for (j = 0; j < N; j++) B[0][j] = f(tempL[j]); if (myid != proc_size - 1) for (j = 0; j < N; j++) B[N - 1][j] = f(tempR[j]);

Вычисление массива

Вычисление центральных точек

Иниц-я посылки теневых граней

Пересылка граней Выч-еграней

Иниц-я посылки теневых граней

Пересылка граней

Выигрыш во времени

Page 11: Разработка приложений в среде  ParJava

Модельный пример пересылки данныхМодельный пример пересылки данных

//sending if( myid != (proc_size – 1)) Send(tempL, 0, N, DOUBLE, myid + 1, 200); if (myid != 0) Recv(tempL, 0, N, DOUBLE, myid - 1, 200);

if(myid != 0) Send(tempR, 0, N, DOUBLE, myid - 1, 200); if (myid != (proc_size - 1)) Recv(tempR, 0, N, DOUBLE, myid + 1, 200);

//calculating for (i = beg_i; i < end_i; i++) for (j = 0; j < N; j++) { if (i == 0) B[i][j] = Math.sqrt(tempL[i] + A[i+1][j]); else if (i == N - 1) B[i][j] = Math.sqrt(A[i-1][j] + tempR[i]); else B[i][j] =Math.sqrt(A[i-1][j] + A[i+1][j]); }

Блокирующие пересылкиБлокирующие пересылки Неблокирующие пересылкиНеблокирующие пересылки //sending if( myid != (proc_size – 1)) ISend(tempL, 0, N, DOUBLE, myid + 1, 200); if (myid != 0) IRecv(tempL, 0, N, DOUBLE, myid - 1, 200);

if(myid != 0) ISend(tempR, 0, N, DOUBLE, myid - 1, 200); if (myid != (proc_size - 1)) IRecv(tempR, 0, N, DOUBLE, myid + 1, 200);

//calculating for (i = 1; i < N - 1; i++) for (j = 0; j < N; j++) B[i][j] =Math.sqrt(A[i-1][j] + A[i+1][j]);

//waiting Wait();

//calculating last columns if (myid != 0) for (j = 0; j < N; j++) B[0][j] = StrictMath.sqrt(tempL[j] + A[1][j]); if (myid != proc_size - 1) for (j = 0; j < N; j++) B[N - 1][j] = StrictMath.sqrt(A[N - 2][j] + tempR[j]);

Page 12: Разработка приложений в среде  ParJava

Выбор процедур обменаВыбор процедур обмена

Варьируя время счета цикла и объем пересылаемых данныхи проинтерпретировав модельный пример, можно убедиться в эффективности использования неблокирующих пересылок, сократив время интерпретации.

Tсчета цикла > T инит. операции пересылки + Tпересылки =

T инит операции пересылки + Sразмер сообщ. /V пересылки

Сравнение на модельном примере

0

5

10

15

20

25

30

0 4 8 12 16 20 24 28

процессоры

уско

рени

е

блокирующий send неблокирующий send

Амдалева кривая

Page 13: Разработка приложений в среде  ParJava

Механизм точек прерыванияМеханизм точек прерывания

Для задач, которые считаются несколько дней становится Для задач, которые считаются несколько дней становится необходимым реализовать механизм точек прерываниянеобходимым реализовать механизм точек прерывания

2 проблемы2 проблемы::

•Сохранение консистентного состоянияСохранение консистентного состояния

•Уменьшить объем сохраняемых данныхУменьшить объем сохраняемых данных

Состояние двух процессов называют неконсистентным, если при передаче сообщения одного процесса другому, возникло состояние, когда первый процесс еще не послал сообщение, а во втором уже сработала функция получения сообщения.

Page 14: Разработка приложений в среде  ParJava

Уменьшение объема сохраняемых данных Уменьшение объема сохраняемых данных

• Сохранение происходит в местах, где размер кучи минимален• Сохраняются только те данные, которые не являются только для чтения и которые не будут изменятся до своего использования (живые переменных).

В В программе моделирования программе моделирования торнадо, мы получили экономию торнадо, мы получили экономию четырехкратное уменьшение четырехкратное уменьшение объема сохраняемых данныхобъема сохраняемых данных

Например, для матрицы Например, для матрицы 320320X320X200 X320X200 надо сохранять не надо сохранять не

10 Гб а 2.5 Гб10 Гб а 2.5 Гб

Space loop ()

{

 difU0 = func(U_iArg[0][ix][iy][iz]);

 U_iDst[ 0][ ix][ iy][ iz] = U_iFxd[ 0][ ix][ iy][ iz] + difU0;

 difF0 = func(F_iArg[0][ix][iy][iz]);

 F_iDst[ 0][ ix][ iy][ iz] = F_iFxd[ 0][ ix][ iy][ iz] + difF0;

 difJ = func(J_iArg[ix][iy][iz]);

 J_iDst[ ix][ iy][ iz] = J_iFxd[ ix][ iy][ iz] + difJ;

 Afxd = A2 [ix] [iy] [iz];

 A2 [ix] [iy] [iz] = Afxd + difA ;

 A_iAdst [ix] [iy] [iz] = A2 [ix] [iy] [iz] + difA ;

}

Page 15: Разработка приложений в среде  ParJava

Исходная система уравненийИсходная система уравненийИсходная система уравненийИсходная система уравнений

a

J

i, j,k = 1, 2, 3.

-возмущения логарифма давления-скорость ветра-момент инерции мезовихря-суммарная завихренность

iU

iiiF

)( 03 Div+aUdt

daz

iikjijkjij

ii

i

X

acaagfAA+U

X

DivUfA=

dt

dU

2321 )2.01(4.0][ˆ))((

)(4j

j X

JJfA=

dt

dJ

][ˆ2)()( 32433 JAJ

gA

X

J

X

FAA

J

f

X

FFfA=

dt

dFjiji

jj

i

j

iji

i

В цилиндрической системе координат ( zr ,, ) с центром в 0),( yx начальные условия имеют вид

))(()())(,()()(),( 11000 rzRzfzRrfrRzfRrfUU uzurzuzour

)))((1())(()()(

1 11

2

10 rzRJrzRzf

zR

rJJJ bkuzbk

0R -характерный радиус начальных мезовихрей 0U 00J - амплитуды в начальный момент

)(r - функция Хевисайда

20

00

)(4),(

R

rRrRrfur

)/1ln(

)/1ln()(

rgh

rghuz zH

zzzf

)2

1exp(2

)5.0()( 01 H

z

H

zJRJzR bkbk

Все остальные компоненты равны нулю.

V

rghz

xyxx VVA

z

UAf ||

8)()( 21

yx

yy VVAz

UAf ||

8)()( 21

- характерная горизонтальная скорость 25.0

11.0

H

zrgh

- параметр шероховатости

Граничные условия

Page 16: Разработка приложений в среде  ParJava

Численная схемаЧисленная схемаЧисленная схема

Трехслойная схема

)(25.0 )1()()()4/1( nX

nX

nX

nX yyyy

)()( };;;{ nX

nX FJUay - значение искомого вектора в дискретной трехмерной точке },,{ 3

032

021

01 hiXhiXhiXX

ki( 0, 1, …, N) в дискретный момент времени tn =n

Для перехода на (n+1)-й слой используется комбинация схемы “чехарда” с осреднением на трех полуслоях и метода Рунге-Кутта

] ;[5.0 )4/1()4/1()()2/1( nnu

nn uauu

];[)(5.0 )()()()1()2/1( nna

nnn uaaaa

];[5.0)(5.0~ )()()()1()( nna

nnn uaaaa

] ;[ )2/1()2/1()()1( nnu

nn uauu

];[~ )2/1()2/1()()1( nna

nn uaaa

][yy - дискретизированный вектор правых частей исходных уравнений

Анализ критериев устойчивости не производился.Критерии устойчивости находились путем численных экспериментов в предположении, что являются комбинацией следующих критериев:

crKurh

AKur

21

crCndh

сUCnd

)(

где с – скорость звука

Page 17: Разработка приложений в среде  ParJava

Требования задачи к ресурсамТребования задачи к ресурсам

При размерности задачи При размерности задачи N*N*M N*N*M

требования к оперативной памяти требования к оперативной памяти N*N*M/2 N*N*M/2 bytebyte

• При N = M = 160 точек задача занимает 2 ГбВремя развития торнадо 119 секунд

на кластере МСЦ (16 2-х процессорных Power 2,2 GHz, 4 GB) считалось 6 часов.

• При N = 320 M = 200 задача занимает 10 ГбВремя счета торнадо в 300 секунд

на кластере МСЦ (64 2-х процессорных Power 2,2 GHz, 4 GB)

- около недели.

Page 18: Разработка приложений в среде  ParJava

0

24

68

1012

1416

1820

2224

2628

3032

34

3638

4042

4446

4850

5254

5658

6062

6466

68

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68

Processors

Sp

eed

up

Prediction

Real execution

Max Speedup

Efficiency 0.5

ПроизводительностьПроизводительность

Page 19: Разработка приложений в среде  ParJava

Основные результаты.Основные результаты.

•Исследован и предложен процесс разработки написания масштабируемых параллельных программ в среде ParJava.

•Разработан механизм оптимальной организации точек останова. И этот механизм реализован в среде ParJava. Разработана версия среды ParJava под Eclipse.

• Разработана масштабируемая параллельная программа численного решения системы уравнений, моделирующая процессы и условия генерации интенсивных атмосферных вихрей (ИАВ) в трехмерной сжимаемой атмосфере, исходя из теории мезомасштабных вихрей по В.Н.Николаевскому.

Page 20: Разработка приложений в среде  ParJava

Апробация работы.Апробация работы.  

Всероссийская научная конференция «Научный сервис в сети ИНТЕРНЕТ: технологии параллельного программирования», г. Новороссийск, 18-23 сентября 2006.

Международный научно-практический Семинар и Молодежная школа «Высокопроизводительные Параллельные Вычисления на Кластерных Системах» 12-17 декабря 2006 года.

International Conference on the Methods of Aerophysical Research – Novosibirsk, 2007.

Sixth International Conference on Computer Science and Information Technologies (CSIT’2007), 24-28 September, Yerevan, Armenia

MTPP 2007 Parallel Computing Technologies First Russian-Taiwan Symposium Pereslavl-Zalesskii (Russia), September 2-3, 2007

Page 21: Разработка приложений в среде  ParJava

Результаты расчетовРезультаты расчетовРезультаты расчетов

Wind vector evolution in YZ-plane, which is passed through the center of the vortex (X=500 m) in the following points of time (left-to-right, up-to-down): t1=10.34 sec,t5=51.7 sec,t10=103.4 sec, t16=165.4 sec.

Page 22: Разработка приложений в среде  ParJava

Результаты расчетовРезультаты расчетовРезультаты расчетов

The field of velocities in the point of timet8 = 83 s on the different levels(left-to-right, up-to-down): z10 = 187.5 м, z40 = 750 м, z60 = 1125 м, z79 = 1481 м.

Page 23: Разработка приложений в среде  ParJava

Список публикацийСписок публикаций

1. А Аветисян А.И., Бабкова В., Гайсарян С.С., Губарь А.Ю.. Рождение торнадо в теории мезомасштабной турбулентности по Николаевскому. Трехмерная численная модель в ParJava. // Журнал «Математическое моделирование». (Принято к печати)

2. А.И.Аветисян, B.B. Бабкова и А.Ю.Губарь. «Возникновение торнадо: трехмерная численная модель в мезомасштабной теории турбулентности по В.Н.Николаевскому»// «ДАН / Геофизика» (сдано в печать)

3. Всероссийская научная конференция «Научный сервис в сети ИНТЕРНЕТ: технологии параллельного программирования», г. Новороссийск, 18-23 сентября 2006. стр. 109-112.

4. Международный научно-практический Семинар и Молодежная школа «Высокопроизводительные Параллельные Вычисления на Кластерных Системах» 12-17 декабря 2006 года. стр.16-20.

5. A.Yu. Gubar, A.I. Avetisyan, and V.V. Babkova, Numerical modelling of 3D tornado arising in the mesovortice turbulence theory of Nikolaevskiy /International Conference on the Methods of Aerophysical Research: Proc. Pt III /Ed. V.M. Fomin. – Novosibirsk: Publ. House “Parallel”, 2007. – 250 p; P135-140.

6. Sixth International Conference on Computer Science and Information Technologies (CSIT’2007), 24-28 September, Yerevan, Armenia

7. MTPP 2007 Parallel Computing Technologies First Russian-Taiwan Symposium Pereslavl-Zalesskii (Russia), September 2-3, 2007

Page 24: Разработка приложений в среде  ParJava
Page 25: Разработка приложений в среде  ParJava