Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Судаков / Лекции / lec17_chmet.ppt
Скачиваний:
30
Добавлен:
20.03.2015
Размер:
653.82 Кб
Скачать

Решение дифференциальных уравнений в частных

производныхВозникают в различных физических задачах

Расчет прогноза погоды

Расчет тепловых свойств

Электричество

Расчет прочности конструкция

Аэродинамика

Дискретизация задачи

 

h i

На область накладывается

h

j

сетка с шагом h

 

Производные заменяются разностными аппроксимациями

Аналогично вторые производные

Уравнение

Пример – уравнение Лапласа

Возникает в электротехнических задачах

Уравнение Лапласа

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

Найти потенциал электрического поля в области с цилиндрической симметрией

На границе области потенциал равен f(x,y)

F(x,y)

U(x,y)

Решение уравнения

Метод Якоби

 

(I-1,j)

 

 

Выражаем значение в узле

 

 

сетки через 4 соседних

u i, j 1

u i 1, j u i

значения

4

 

 

 

Выбираем начальное приближение в узле

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

(I,j+1)

(I,j) (I+1,j)

(I,j-1)

1, j u i, j 1 u i, j 1

Распараллеливание

На сетку накладывается процессорная сетка

Каждому узлу процессорной сетки соответствует n/p узлов сетки дискретизации

Для каждого узла процессорной сетки итерации можно проводить параллельно

После итерации необходим обмен на границе сетки

Узел

процессорной

сетки

2

43

Узел сетки дискретизации

Реализация

//px, py – координати процесора в процесорній сітці

//u – старі наближення функції у вузлах сітки

//unew – нові наближення функції у вузлах сітки for(;;){

if(px!=0) for(j=0;j<n/p;j++) send(px+1,u[n/p-1][j]); if(px!=n-1) for(j=0;j<n/p;j++) send(px-1,u[0][j]); if(py!=0) for(j=0;j<n/p;j++) send(px+1,u[j][n/p-1]); if(py!=n-1) for(j=0;j<n/p;j++) send(px-1,u[j][0]); if(px!=0) for(j=0;j<n/p;j++) recv(px+1,u[n/p][j]); if(px!=n-1) for(j=0;j<n/p;j++) recv(px-1,u[-1][j]); if(py!=0) for(j=0;j<n/p;j++) recv(px+1,u[j][n/p]); if(py!=n-1) for(j=0;j<n/p;j++) recv(px-1,u[j][-1]); for(i=0,i<n/p;i++){

for(j=0;j<n/p;j++){ unew[i][j]=(u[i+1][j]+u[i-1][j]+u[i][j+1]+u[i],[j-1])/4;

}

}

//передати на всі процесори норму нового наближення allreduce(abs(unew));

if(abs(abs(unew)-abs(u))< eps) break; u=unew;

absu=abs(unew);

}

Оценка эффективности

Для сетки n2 время выполнение последовательного алгоритма 4tn2

Для p2 процессоров время состоит из процессорной работы и обмена

ускорение растет с увеличением количества данных задачи и падает с увеличением количества процессоров

k

 

 

T

 

 

4tn2

ï

 

1

 

 

 

Tp

4tn2

 

 

 

 

 

 

 

 

p2

4 to tc log2 p

Вопросы

Соседние файлы в папке Лекции