SlideShare a Scribd company logo
Лекция 5. Метод конечных
разностей (параллельные
алгоритмы в стандарте MPI)
Пазников Алексей Александрович
Параллельные вычислительные технологии
СибГУТИ (Новосибирск)
Осенний семестр 2015
www: cpct.sibsutis.ru/~apaznikov/teaching
q/a: piazza.com/sibsutis.ru/fall2015/pct2015fall
Дифференциальные
уравнения
в частных
производных
3
Дифференциальные уравнения в частных производных
Обычное дифференциальное уравнение – уравнение, содержащее производные
функций одной переменной.
Дифференциальное уравнение в частных производных (ДУЧП) – уравнение,
содержащее частные производные функции нескольких переменных.
Многие физические явления моделируются с помощью ДУЧП, например:
▪ Обтекание крыла самолёта.
▪ Циркуляция крови в теле человека.
▪ Циркуляция воды в океане.
▪ Деформация моста под действием транспорта.
▪ Моделирование климатических явлений (“прогноз погоды”).
▪ Моделирование стихийных бедствий.
▪ Изменение температуры различных объектов.
▪ и т.д.
Методы решения ДУЧП:
▪ Методы конечных элементов.
▪ Методы конечных разностей.
4
Методы решения ДУЧП:
▪ Методы конечных элементов.
▪ Методы конечных разностей (МКР).
Метод конечных разностей предполагает представления ДУЧП в виде СЛАУ. Матрицы,
полученные в результате этого, разрежены. Поэтому реализации МКР разделяются на
две категории в зависимости от того, как представлены разреженные матрицы.
▪ Матрицы представлены явно, с использованием структур, которые поддерживают
эффективный доступ к ненулевым элементам.
▪ Матрицы представлены неявно.
Дифференциальные уравнения в частных производных
5
u = f(x, y) – u – функция от двух переменных
ux
– частная производная функции u по x
yu
– частная производная функции u по y
Порядок k – это взятие k частных производных (например, для функции u имеет место
три частных производных второго порядка: uxx
, uxy
, uyy
.
ДУЧП второго порядка не содержит производные порядка больше двух.
Линейное ДУЧП представляет собой уравнение следующего вида:
Auxx
+ 2Buxx
+ Cuyy
+ Eux
+ Fuy
+ Gu = H
где A, B, C, D, E, F, G, H – это функции от x и y.
Примеры линейных ДУЧП:
4uxx
+ 6xyuxy
= 0
2uxy
+ x2uyy
= sin(xy)
Примеры нелинейных ДУЧП второго порядка:
u2
xx
+ uyy
= 0
uuxy
+ sin(xy)uyy
= x + y
Классификация ДУЧП
Линейное ДУЧП представляет собой уравнение следующего вида:
Auxx
+ 2Buxx
+ Cuyy
+ Eux
+ Fuy
+ Gu = H
где A, B, C, D, E, F, G, H – это функции от x и y.
В зависимости от значений A, B, C, линейные ДУЧП второго порядка классифицируются:
▪ Эллиптические ДУЧП: B2
– AC < 0
▪ Параболические ДУЧП: B2
– AC = 0
▪ Гиперболические ДУЧП: B2
– AC > 0
Примеры:
Уравнение Пуассона uxx
+ uyy
= f(x, y) – пример эллиптического ДУЧП. С помощью него
моделируются проблемы электричества, магнетизма, гравитации, процессы
распределения тепла или электричества в однородных проводниках. Если f(x, y) = 0,
уравнение Пуассона называется уравнением Лапласа.
Уравнение теплопроводности kuxx
= ut
– пример параболического ДУЧП. Уравнение
описывает передачу тепла в твёрдых телах. Также этим уравнением описывается
професс диффузии жидкостей и газов (уравнение диффузии).
Волновое уравнение c2
uxx
= utt
– пример гиперболического ДУЧП. Волновое уравнение
позволяет моделировать распространение волны и вибрацию струн и мембран.
6
Классификация линейных ДУЧП
Метод конечных разностей приближает решение ДУЧП путем разделения переменных
(по времени и пространству) на дискретные интервалы.
Рассмотрим функцию f. Необходимо расчитать первую и вторую производные этой
функции в точке x. Приближенное вычисление производной:
f'(x) ≈ [ f(x + h / 2) – f(x – h / 2)] / h
7
Разностные отношения
f(x + h / 2)
f(x – h / 2)
f'(x)
x – h x – h / 2 x x + h / 2 x + h
Вторая производная f''(x) = f'(f'(x)):
f''(x) ≈ ([f(x + h / 2 – h / 2) – f(x + h / 2 – h / 2)] / h – [f(x – h / 2 + h / 2) – f(x – h / 2 – h / 2)]) / h ≈
≈ [f(x + h) – f(x) – ((f(x) – f(x – h))] / h2
≈
≈ [f(x + h) – 2f(x) + f(x – h)] / h2
Моделирование
вибрации
страны
Цель состоит в моделировании вибрации струны (такой, как, например, гитарная).
В частности, требуется определить позицию струны в определённый момент времени на
основе текущей позиции.
▪ Концы струны зафиксированы.
▪ Переменная x отражает положение точки между концами струны. Левый конец
соответствует x = 0, правый – x = 1. Т.е. 0 ≤ x ≤ 1.
▪ Переменная t ≥ 0 соответствует времени. Изначальная позиция струны – это её
позиция в момент t = 0.
▪ Функция u(x, t) описывает смещение струны в точке x в момент времени t.
9
Моделирование вибрации струны
1.5
1.0
0.5
0
– 0.5
– 1.0
– 1.5
t = 0.0 и 1.0
t = 0.1 и 0.9
t = 0.2 и 0.8
t = 0.3 и 0.7
t = 0.5
t = 0.4 и 0.6
Данная проблема моделируется множеством уравнений.
Первое уравнение – линейное ДУЧП второго порядка, отражает процесс изменения
смещений струны:
4uxx
= utt
, 0 < x < 1, 0 < t
Второе уравнение описывает то, что струна зафиксирована с двух сторон:
u(0, t) = u(1, t) = 0, t > 0
Третье и четвёртое уравнения описывают начальную позицию и скорость струны
в начальный момент времени:
u(x, 0) = sin(πx), ut
(x, 0) = 0, 0 ≤ x ≤ 1
Данный вид уравнений – частный случай волнового уравнения общего вида:
c2
uxx
= utt
, 0 ≤ x ≤ 0, t ≥ 0
u(x, 0) = F(x) и ut
(x, 0) = G(x) на [0, a]
u(0, t) = u(a, t) = 0
10
Моделирование вибрации струны
Необходимо найти решение задачи для значений x, заключённых между 0 и a, во все
моменты времени от 0 до T.
Разобьём пространственный интервал на n частей и временной интервал на m частей:
▪ h = a / n – шаг по пространству
▪ k = T / m – шаг по времени
Если шаг k будет слишком большим (kc / h > 1), то дискретизация будет слишком
грубой
и решение не будет сходиться к истинному.
Если шаг k будет слишком малым (kc / h < 1), то ошибки округления будут
накапливаться
и это также уменьшит точность решения.
Поэтому оптимальным вариантом будет случай, когда kc / h = 1.
Пусть
▪ xi
= ih, i = 0, 1, …, n
▪ tj
= jk, j = 0, 1, …, m
Тогда
▪ ui
, j = u(xi
, tj
) – смещение струны в позиции xi
в момент времени tj
11
Моделирование вибрации струны
Используя полученные формулы для апроксимации производной
f''(x) ≈ [f(x + h) – 2f(x) + f(x – h)] / h2
можно расчитать вторые производные uxx
и utt
:
uxx
(xi
, tj
) ≈ [u(xi
+ h, tj
) – 2u(xi
, tj
) + u(xi
– h, tj
)] / h2
≈ [ui+1,j
– 2ui,j
+ ui–1,j
] / h2
utt
(xi
, tj
) ≈ [u(xi
, tj
+ k) – 2u(xi
, tj
) + u(xi
, tj
– k)] / k2
≈ [ui,j+1
– 2ui,j
+ ui,j–1
] / k2
Эти формулы теперь можно подставить в исходное волновое уравнение!
12
Моделирование вибрации струны
k
T
x a
ui,j
= u(xi
, tj
)
ui, j+1
ui, j–1
ui–1, j+1
ui+1, j+1
ui+1, j–1
ui–1, j–1
ui–1, j
ui+1, j
Используя полученные формулы для апроксимации производной
f''(x) ≈ [f(x + h) – 2f(x) + f(x – h)] / h2
можно расчитать вторые производные uxx
и utt
:
uxx
(xi
, tj
) ≈ [u(xi
+ h, tj
) – 2u(xi
, tj
) + u(xi
– h, tj
)] / h2
≈ [ui+1,j
– 2ui,j
+ ui–1,j
] / h2
utt
(xi
, tj
) ≈ [u(xi
, tj
+ k) – 2u(xi
, tj
) + u(xi
, tj
– k)] / k2
≈ [ui,j+1
– 2ui,j
+ ui,j–1
] / k2
Эти формулы теперь можно подставить в исходное волновое уравнение
и выразить смещение:
ui,1
≈ L / 2 × (ui+1, 0
+ ui-1, 0
) + (1 – L) ui, 0
+ kG(ih)
ui, j + 1
≈ 2 × (1 – L) × uij
+ L (ui+1, j
+ ui – 1, j
) – ui, j – 1
13
Моделирование вибрации струны
14
Последовательная версия программы
#define F(x) sin(M_PI * (x)) // Начальная позиция струны
#define G(x) 0.0 // Начальная скорость струны
#define a 1.0 // Длина струны
#define c 2.0 // Константа
#define m 20 // Количество временных интервалов
#define n 8 // Количество пространственных интервалов
#define T 1.0 // Временной отрезок моделирования
int main() {
const double h = a / n; // Шаг по пространству
const double k = T / m; // Шаг по времени
const double L = (k * c / h) * (k * c / h);
double u[m + 1][n + 1]; // Смещения струны
for (j = 0; j <= m; j++) // Смещение на концах струны
u[j][0] = u[j][n] = 0;
for (i = 1; i < n; i++) // Смещение в начальный момент времени
u[0][i] = F(i * h);
for (i = 1; i < n; i++) // Смещение в момент, следующий после начального
u[1][i] = (L / 2.0) * (u[0][i + 1] + u[0][i - 1]) +
(1.0 - L) * u[0][i] + k * G(i * h);
for (j = 1; j < m; j++) // Смещение в остальные моменты времени
for (i = 1; i < n; i++)
u[j + 1][i] = 2.0 * (1.0 - L) * u[j][i] +
L * (u[j][i + 1] + u[j][i - 1]) - u[j - 1][i];
for (j = 0; j <= m; j++) { // Печать результатов
for (i = 0; i <= n; i++) printf("%6.3f ", u[j][i]); putchar('n'); }
Новое значение u[j + 1][i] зависит от значений u[j][i - 1], u[j][i],
u[j][i + 1] и u[j - 1][i]:
15
Параллельный алгоритм моделирования вибрации струны
u[j+1][i]
u[j][i+1]u[j][i-1]
u[j-1][i]
u[j][i]
Вычисление смещения в конкретной точке для различных моментов времени
полностью последовательно: u[j + 1][i] зависит от u[j][i] и u[j - 1][i].
Поэтому декомпозицию для распараллеливания необходимо выполнять
по пространству.
Разобьём n интервалов струны между p процессами, каждый получит n / p элементов.
Любой процесс на очередном временном шаге вычисляет значения n / p элементов,
при этом все значения, кроме крайних элементов, он может рассчитать
самостоятельно, а для крайних (отмечены цветом) необходимо получить значения от
соседних процессов (помечены пунктиром):
16
Процесс k
j + 1
j
j - 1
...
i i + 1 ... k * n / p
Т.о., схема взаимодействия процесов:
Процесс k
...
i i + 1 ... k * n / p
Процесс k – 1
j + 1
j
j - 1
Процесс k + 1
Параллельный алгоритм моделирования вибрации струны
Т.о., схема взаимодействия процесов:
17
Процесс k
...
i i + 1 ... k * n / p
Процесс k – 1
j + 1
j
j - 1
Процесс k + 1
Параллельный алгоритм моделирования вибрации струны
Для удобства программирования рекомендуется ввести дополнительный столбец для
обмена граничными элементами:
Процесс k
...
Процесс k – 1 Процесс k + 1
...... ...
Для сокращения количества обменов на каждой итерации рассчитывается сразу несколько
временных шагов. При этом передаётся сразу несколько элементов
18
Параллельный алгоритм моделирования вибрации струны
Процесс k
j + 1
j
j - 1
Процесс k + 1
... ...
Процесс k
j + 1
j
j - 1
Процесс k + 1
... ...
j + 2
j + 1
j
j - 1
Процесс k + 1
j + 2
......
j + 3
Процесс k
Передаётся один
элемент,
рассчитывается один
шаг по времени.
Передаётся два
элемента,
рассчитывается два
шага по времени,
один элемент
избыточный.
Передаётся три
элемента,
рассчитывается три
шага по времени, три
элемента
вычисляются
избыточно.
Увеличение граничных элементов (временных шагов, рассчитываемых за одну
итерацию) приводит к следующим последствиям:
1. Увеличение длины сообщения.
2. Уменьшение частоты передачи сообщений (уменьшение латентности).
3. Добавление избыточных вычислений.
Рассчитаем количество избыточно вычисленных элементов. Если с каждой стороны
области k граничных элементов, тогда сообщение длины k отправляется и присылается
от соседних процессов каждые k итераций. Число избыточно рассчитанных элементов:
k – 1
i = k (k – 1) / 2
i = 1
График зависимости накладных расходов от числа граничных элементов:
19
Параллельный алгоритм моделирования вибрации струны
∑
Накладныерасходы
Число граничных элементов
Увеличение числа граничных
элементов позволяет сократить
накладные расходы до точки, после
которой время выполнения
избыточных вычислений станет
превышать пользу от сокращения
числа информационных обменов.
Задача
стационарного
распределения
тепла
Рассматривается параллельная версия программы определения стационарного
распределенгия тепла для тонкой прямоугольной пластины.
Задача стационарного распределения тепла в общем случае описывается уравнением
Пуассона:
uxx
+ uyy
= f(x, y), 0 ≤ x ≤ a, 0 ≤ y ≤ b
с заданными граничными условиями (значение функции на границе области):
u(x, 0) = G1
(x) и u(x, b) = G2
(x) 0 ≤ x ≤ a
u(0, y) = G3
(y) и u(a, y) = G4
(y) 0 ≤ y ≤ b
Если область прямоугольная, то задача называется задачей Дирихле.
Если функции G1
, G2
, G3
и G4
непрерывны и функция f непрерывна внутри прямоугольной
области, то задача имеет единственное решение.
Для моделирования составим прямоугольную сетку. Каждая точка (xi
, yj
) этой сетки
соответствует конкретной координате (x, y) внутри прямоугольной области.
Моделирование состоит в периодическом вычислении значений во внутренних узлах
сетки.
21
Задача стационарного распределения тепла
Для моделирования составим прямоугольную сетку. Каждая точка (xi
, yj
) этой сетки
соответствует конкретной координате (x, y) внутри прямоугольной области.
Моделирование состоит в периодическом вычислении значений во внутренних узлах
сетки.
22
G1
(x)
G4
(x) G2
(x)
G1
(x)
G4
(x) G2
(x)
G3
(x)G3
(x)
(xi
, yj
)
uxx
+ uyy
= f(x, y)
0 a
b
x
y
Задача стационарного распределения тепла
Разобьём пространственную размерность x на n частей и пространственную
размерность y на m частей. Определим h = x / n, k = y / m.
Вычислим приблеженно вторые производные по x и по y:
uxx
(xi
, yj
) ≈ [ u(xi
+ h, yj
) – 2u(xi
, yj
) + u(xi
– h, yj
) ] / h2
≈
≈ [ ui + 1, j
– 2ui, j
+ ui – 1, j
] / h2
uyy
(xi
, yj
) ≈ [ ui, j + 1
– 2ui, j
+ ui, j – 1
] / k2
Подставляя выражения для производных в уравнение Пуассона, получаем:
(ui + 1, j
– 2ui, j
+ ui – 1, j
) / h2
+ (ui, j + 1
– 2ui, j
+ ui, j – 1
) / k2
= f(xi
, yj
)
Положим λ = k / h. После серии элементарных преобразований получаем:
ui, j
= [ λ2
(ui + 1, j
+ ui – 1, j
) + ui, j + 1
+ ui, j – 1
– k2
fi, j
] / [ 2 (1 + λ2
) ]
Теперь рассмотрим конкретную задачу. Необходимо выполнить моделирование для
тонкой стальной пластины, с трёх сторон окружённая водяным паром (температура 100°
С), а с четвёртой стороны граничащая со льдом (температура 0°С). Сверху и снизу
пластины находится изолирующий слой.
Цель моделирования – отыскать стационарное распределение температуры во
внутренних точках пластины.
23
Задача стационарного распределения тепла
Теперь рассмотрим конкретную задачу. Необходимо выполнить моделирование для
тонкой стальной пластины, с трёх сторон окружённая водяным паром (температура
100°С), а с четвёртой стороны граничащая со льдом (температура 0°С). Сверху и
снизу пластины находится изолирующий слой.
Цель моделирования – отыскать стационарное распределение температуры во
внутренних точках пластины.
24
ui + 1, j
ui, j + 1
ui, j – 1
ui – 1, j
ui, j
Поскольку точки распределены равномерно,
то h = k и λ = 1.
Поскольку пластина изолирована, тепло не
проникает внутрь и распространяется только
с границ. Это означает, что fi, j
= 0. Поэтому
можно записать:
ui, j
= (ui + 1, j
+ ui – 1, j
+ ui, j + 1
+ ui, j – 1
) / 4
Начиная с начальных значений, по
известным значениям можно рассчитывать
все последующие значения wi, j
– и так до тех
пор, пока значения не будут сходиться. Новое значение ui,j
зависит от
четырёх предыдущих ui, j – 1
, ui + 1, j
,
ui, j + 1
, ui – 1, j
Задача стационарного распределения тепла
25
Последовательная программа
#include <stdio.h>
#include <math.h>
#define N 100
#define EPS 0.01
int main(int argc, char *argv[])
{
double diff; // Изменение значений
int i, j;
double mean; // Среднее значение на границах
double u[N][N]; // Старые значения
double v[N][N]; // Новые значения
// Установить граничные значения и расчитать среднее значение на границах
mean = 0.0;
for (i = 0; i < N; i++) {
u[i][0] = u[i][N - 1] = u[0][i] = 100.0;
u[N - 1][i] = 0.0;
mean += u[i][0] + u[i][N - 1] + u[0][i] + u[N - 1][i];
}
mean /= (4.0 * N);
// Проинициализировать внутренние значения
for (i = 1; i < N - 1; i++)
for (j = 1; j < N - 1; j++)
u[i][j] = mean;
26
Последовательная программа
// Расчитать стационарное состояние
for (;;) {
diff = 0.0;
for (i = 1; i < N - 1; i++)
for (j = 1; j < N - 1; j++) {
v[i][j] = (u[i - 1][j] + u[i + 1][j] +
u[i][j - 1] + u[i][j + 1]) / 4.0;
if (fabs(v[i][j] - u[i][j]) > diff)
diff = fabs(v[i][j] - u[i][j]);
}
if (diff <= EPS)
break;
for (i = 1; i < N - 1; i++)
for (j = 1; j < N - 1; j++)
u[i][j] = v[i][j];
}
// Распечатать решение
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
printf("%6.2f ", u[i][j]);
putchar('n');
}
}
u[i + 1] [j]
u[i][j + 1]u[i][j – 1]
u[i – 1][j]
v[i][j]
27
Последовательная программа
// Расчитать стационарное состояние
for (;;) {
diff = 0.0;
for (i = 1; i < N - 1; i++)
for (j = 1; j < N - 1; j++) {
v[i][j] = (u[i - 1][j] + u[i + 1][j] +
u[i][j - 1] + u[i][j + 1]) / 4.0;
if (fabs(v[i][j] - u[i][j]) > diff)
diff = fabs(v[i][j] - u[i][j]);
}
if (diff <= EPS)
break;
for (i = 1; i < N - 1; i++)
for (j = 1; j < N - 1; j++)
u[i][j] = v[i][j];
}
// Распечатать решение
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
printf("%6.2f ", u[i][j]);
putchar('n');
}
}
u[i + 1] [j]
u[i][j + 1]u[i][j – 1]
u[i – 1][j]
v[i][j]
Вычисление новых значений v[i][j]
температуры можно выполнять
параллельно!
Вычислительная сложность (для квадратной решётки): T = O(n2
)
28
Параллельный алгоритм
P0
P1
…
Pp
P0 P1 P2 P3
P4 P5
Pp…
… … … …
… …
P6 P7
Декомпозиция по строкам Декомпозиция по блокам
29
Параллельный алгоритм
Декомпозиция по строкам Декомпозиция по блокам
P0
P1
…
Pp
P0 P1 P2 P3
P4 P5
Pp…
… … … …
… …
P6 P7
Вычислительная сложность: O(n2
/ p)
Коммуникационная сложность: O(n)
Общее количество пересылаемых
элементов на одной итерации: O(np)
Вычислительная сложность: O( [n / sqrt(p)]2
)
Коммуникационная сложность: O(n / sqrt(p))
Общее количество пересылаемых
элементов на одной итерации: O(n sqrt(p))

More Related Content

What's hot

Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)
Mikhail Kurnosov
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Nikolay Grebenshikov
 
Многочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийМногочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийTheoretical mechanics department
 
Метод отдельных тел
Метод отдельных телМетод отдельных тел
Метод отдельных тел
Theoretical mechanics department
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Mikhail Kurnosov
 
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Mikhail Kurnosov
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Nikolay Grebenshikov
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
Mikhail Kurnosov
 
23
2323
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
Mikhail Kurnosov
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Nikolay Grebenshikov
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02Computer Science Club
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение"
Technosphere1
 
Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"
Technosphere1
 
Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signature
Andrei Poliakov
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графе
Mikhail Kurnosov
 
20091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture1020091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture10Computer Science Club
 
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL ModelsTMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
Iosif Itkin
 

What's hot (20)

Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
 
Многочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийМногочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближений
 
Метод отдельных тел
Метод отдельных телМетод отдельных тел
Метод отдельных тел
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
 
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
 
23
2323
23
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение"
 
Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"
 
Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signature
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графе
 
20091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture1020091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture10
 
Integral1
Integral1Integral1
Integral1
 
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL ModelsTMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
 

Similar to Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)

Учебная компьютерная модель «сложение взаимно перпендикулярных колебаний» 200...
Учебная компьютерная модель «сложение взаимно перпендикулярных колебаний» 200...Учебная компьютерная модель «сложение взаимно перпендикулярных колебаний» 200...
Учебная компьютерная модель «сложение взаимно перпендикулярных колебаний» 200...
Павел Ермолович
 
Лекция 5. Механические колебания (часть 1)
Лекция 5. Механические колебания (часть 1)Лекция 5. Механические колебания (часть 1)
Лекция 5. Механические колебания (часть 1)
kotikes
 
fiz-mat
fiz-matfiz-mat
Математическое дополнение
Математическое дополнениеМатематическое дополнение
Математическое дополнение
BigVilly
 
Задание 1
Задание 1Задание 1
Opredelennyj integral
Opredelennyj integralOpredelennyj integral
Opredelennyj integral
Dimon4
 
Proizvodnaja
ProizvodnajaProizvodnaja
Proizvodnaja
ShishkinaIrina
 
решения к физика задачник_10-11кл_рымкевич_2003
решения к физика задачник_10-11кл_рымкевич_2003 решения к физика задачник_10-11кл_рымкевич_2003
решения к физика задачник_10-11кл_рымкевич_2003
Иван Иванов
 
23
2323
Прямолинейное движение. ОТВЕТЫ И РЕШЕНИЯ.
Прямолинейное движение. ОТВЕТЫ И РЕШЕНИЯ.Прямолинейное движение. ОТВЕТЫ И РЕШЕНИЯ.
Прямолинейное движение. ОТВЕТЫ И РЕШЕНИЯ.
Garik Yenokyan
 
Fractal Geometry
Fractal GeometryFractal Geometry
Fractal Geometry
SSA KPI
 
7
77
ЗАМЕЧАНИЕ К ПОСТРОЕНИЮ НЕ ИМЕЮЩЕГО РИСКА ПОРТФЕЛЯ
ЗАМЕЧАНИЕ К ПОСТРОЕНИЮ НЕ ИМЕЮЩЕГО РИСКА ПОРТФЕЛЯ ЗАМЕЧАНИЕ К ПОСТРОЕНИЮ НЕ ИМЕЮЩЕГО РИСКА ПОРТФЕЛЯ
ЗАМЕЧАНИЕ К ПОСТРОЕНИЮ НЕ ИМЕЮЩЕГО РИСКА ПОРТФЕЛЯ
Ilya Gikhman
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
LIPugach
 
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. § 3. Вращательное движение. ОТВЕТЫ И РЕШ...
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. § 3. Вращательное движение. ОТВЕТЫ И РЕШ...ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. § 3. Вращательное движение. ОТВЕТЫ И РЕШ...
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. § 3. Вращательное движение. ОТВЕТЫ И РЕШ...
Garik Yenokyan
 
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. §2. Криволинейное движение. ОТВЕТЫ И РЕШ...
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. §2. Криволинейное движение. ОТВЕТЫ И РЕШ...ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. §2. Криволинейное движение. ОТВЕТЫ И РЕШ...
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. §2. Криволинейное движение. ОТВЕТЫ И РЕШ...
Garik Yenokyan
 
Графический метод
Графический методГрафический метод
Графический метод
larionvvs
 

Similar to Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI) (20)

Учебная компьютерная модель «сложение взаимно перпендикулярных колебаний» 200...
Учебная компьютерная модель «сложение взаимно перпендикулярных колебаний» 200...Учебная компьютерная модель «сложение взаимно перпендикулярных колебаний» 200...
Учебная компьютерная модель «сложение взаимно перпендикулярных колебаний» 200...
 
Лекция 5. Механические колебания (часть 1)
Лекция 5. Механические колебания (часть 1)Лекция 5. Механические колебания (часть 1)
Лекция 5. Механические колебания (часть 1)
 
fiz-mat
fiz-matfiz-mat
fiz-mat
 
Математическое дополнение
Математическое дополнениеМатематическое дополнение
Математическое дополнение
 
Задание 1
Задание 1Задание 1
Задание 1
 
Opredelennyj integral
Opredelennyj integralOpredelennyj integral
Opredelennyj integral
 
Proizvodnaja
ProizvodnajaProizvodnaja
Proizvodnaja
 
решения к физика задачник_10-11кл_рымкевич_2003
решения к физика задачник_10-11кл_рымкевич_2003 решения к физика задачник_10-11кл_рымкевич_2003
решения к физика задачник_10-11кл_рымкевич_2003
 
Get Ft
Get FtGet Ft
Get Ft
 
23
2323
23
 
колеб
колебколеб
колеб
 
Прямолинейное движение. ОТВЕТЫ И РЕШЕНИЯ.
Прямолинейное движение. ОТВЕТЫ И РЕШЕНИЯ.Прямолинейное движение. ОТВЕТЫ И РЕШЕНИЯ.
Прямолинейное движение. ОТВЕТЫ И РЕШЕНИЯ.
 
Fractal Geometry
Fractal GeometryFractal Geometry
Fractal Geometry
 
2 prohds
2 prohds2 prohds
2 prohds
 
7
77
7
 
ЗАМЕЧАНИЕ К ПОСТРОЕНИЮ НЕ ИМЕЮЩЕГО РИСКА ПОРТФЕЛЯ
ЗАМЕЧАНИЕ К ПОСТРОЕНИЮ НЕ ИМЕЮЩЕГО РИСКА ПОРТФЕЛЯ ЗАМЕЧАНИЕ К ПОСТРОЕНИЮ НЕ ИМЕЮЩЕГО РИСКА ПОРТФЕЛЯ
ЗАМЕЧАНИЕ К ПОСТРОЕНИЮ НЕ ИМЕЮЩЕГО РИСКА ПОРТФЕЛЯ
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
 
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. § 3. Вращательное движение. ОТВЕТЫ И РЕШ...
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. § 3. Вращательное движение. ОТВЕТЫ И РЕШ...ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. § 3. Вращательное движение. ОТВЕТЫ И РЕШ...
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. § 3. Вращательное движение. ОТВЕТЫ И РЕШ...
 
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. §2. Криволинейное движение. ОТВЕТЫ И РЕШ...
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. §2. Криволинейное движение. ОТВЕТЫ И РЕШ...ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. §2. Криволинейное движение. ОТВЕТЫ И РЕШ...
ЗАДАЧИ ПО ФИЗИКЕ. ГЛАВА I. МЕХАНИКА. §2. Криволинейное движение. ОТВЕТЫ И РЕШ...
 
Графический метод
Графический методГрафический метод
Графический метод
 

More from Alexey Paznikov

Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Alexey Paznikov
 
Лекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPIЛекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPI
Alexey Paznikov
 
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Alexey Paznikov
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Alexey Paznikov
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курсаПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курса
Alexey Paznikov
 
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
Alexey Paznikov
 
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
Alexey Paznikov
 
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
Alexey Paznikov
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
Alexey Paznikov
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Alexey Paznikov
 
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX ThreadsПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
Alexey Paznikov
 

More from Alexey Paznikov (20)

Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
 
Лекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPIЛекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPI
 
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
 
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
 
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
 
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
ПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курсаПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курса
 
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
 
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
 
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
 
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX ThreadsПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
 

Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)

  • 1. Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI) Пазников Алексей Александрович Параллельные вычислительные технологии СибГУТИ (Новосибирск) Осенний семестр 2015 www: cpct.sibsutis.ru/~apaznikov/teaching q/a: piazza.com/sibsutis.ru/fall2015/pct2015fall
  • 3. 3 Дифференциальные уравнения в частных производных Обычное дифференциальное уравнение – уравнение, содержащее производные функций одной переменной. Дифференциальное уравнение в частных производных (ДУЧП) – уравнение, содержащее частные производные функции нескольких переменных. Многие физические явления моделируются с помощью ДУЧП, например: ▪ Обтекание крыла самолёта. ▪ Циркуляция крови в теле человека. ▪ Циркуляция воды в океане. ▪ Деформация моста под действием транспорта. ▪ Моделирование климатических явлений (“прогноз погоды”). ▪ Моделирование стихийных бедствий. ▪ Изменение температуры различных объектов. ▪ и т.д. Методы решения ДУЧП: ▪ Методы конечных элементов. ▪ Методы конечных разностей.
  • 4. 4 Методы решения ДУЧП: ▪ Методы конечных элементов. ▪ Методы конечных разностей (МКР). Метод конечных разностей предполагает представления ДУЧП в виде СЛАУ. Матрицы, полученные в результате этого, разрежены. Поэтому реализации МКР разделяются на две категории в зависимости от того, как представлены разреженные матрицы. ▪ Матрицы представлены явно, с использованием структур, которые поддерживают эффективный доступ к ненулевым элементам. ▪ Матрицы представлены неявно. Дифференциальные уравнения в частных производных
  • 5. 5 u = f(x, y) – u – функция от двух переменных ux – частная производная функции u по x yu – частная производная функции u по y Порядок k – это взятие k частных производных (например, для функции u имеет место три частных производных второго порядка: uxx , uxy , uyy . ДУЧП второго порядка не содержит производные порядка больше двух. Линейное ДУЧП представляет собой уравнение следующего вида: Auxx + 2Buxx + Cuyy + Eux + Fuy + Gu = H где A, B, C, D, E, F, G, H – это функции от x и y. Примеры линейных ДУЧП: 4uxx + 6xyuxy = 0 2uxy + x2uyy = sin(xy) Примеры нелинейных ДУЧП второго порядка: u2 xx + uyy = 0 uuxy + sin(xy)uyy = x + y Классификация ДУЧП
  • 6. Линейное ДУЧП представляет собой уравнение следующего вида: Auxx + 2Buxx + Cuyy + Eux + Fuy + Gu = H где A, B, C, D, E, F, G, H – это функции от x и y. В зависимости от значений A, B, C, линейные ДУЧП второго порядка классифицируются: ▪ Эллиптические ДУЧП: B2 – AC < 0 ▪ Параболические ДУЧП: B2 – AC = 0 ▪ Гиперболические ДУЧП: B2 – AC > 0 Примеры: Уравнение Пуассона uxx + uyy = f(x, y) – пример эллиптического ДУЧП. С помощью него моделируются проблемы электричества, магнетизма, гравитации, процессы распределения тепла или электричества в однородных проводниках. Если f(x, y) = 0, уравнение Пуассона называется уравнением Лапласа. Уравнение теплопроводности kuxx = ut – пример параболического ДУЧП. Уравнение описывает передачу тепла в твёрдых телах. Также этим уравнением описывается професс диффузии жидкостей и газов (уравнение диффузии). Волновое уравнение c2 uxx = utt – пример гиперболического ДУЧП. Волновое уравнение позволяет моделировать распространение волны и вибрацию струн и мембран. 6 Классификация линейных ДУЧП
  • 7. Метод конечных разностей приближает решение ДУЧП путем разделения переменных (по времени и пространству) на дискретные интервалы. Рассмотрим функцию f. Необходимо расчитать первую и вторую производные этой функции в точке x. Приближенное вычисление производной: f'(x) ≈ [ f(x + h / 2) – f(x – h / 2)] / h 7 Разностные отношения f(x + h / 2) f(x – h / 2) f'(x) x – h x – h / 2 x x + h / 2 x + h Вторая производная f''(x) = f'(f'(x)): f''(x) ≈ ([f(x + h / 2 – h / 2) – f(x + h / 2 – h / 2)] / h – [f(x – h / 2 + h / 2) – f(x – h / 2 – h / 2)]) / h ≈ ≈ [f(x + h) – f(x) – ((f(x) – f(x – h))] / h2 ≈ ≈ [f(x + h) – 2f(x) + f(x – h)] / h2
  • 9. Цель состоит в моделировании вибрации струны (такой, как, например, гитарная). В частности, требуется определить позицию струны в определённый момент времени на основе текущей позиции. ▪ Концы струны зафиксированы. ▪ Переменная x отражает положение точки между концами струны. Левый конец соответствует x = 0, правый – x = 1. Т.е. 0 ≤ x ≤ 1. ▪ Переменная t ≥ 0 соответствует времени. Изначальная позиция струны – это её позиция в момент t = 0. ▪ Функция u(x, t) описывает смещение струны в точке x в момент времени t. 9 Моделирование вибрации струны 1.5 1.0 0.5 0 – 0.5 – 1.0 – 1.5 t = 0.0 и 1.0 t = 0.1 и 0.9 t = 0.2 и 0.8 t = 0.3 и 0.7 t = 0.5 t = 0.4 и 0.6
  • 10. Данная проблема моделируется множеством уравнений. Первое уравнение – линейное ДУЧП второго порядка, отражает процесс изменения смещений струны: 4uxx = utt , 0 < x < 1, 0 < t Второе уравнение описывает то, что струна зафиксирована с двух сторон: u(0, t) = u(1, t) = 0, t > 0 Третье и четвёртое уравнения описывают начальную позицию и скорость струны в начальный момент времени: u(x, 0) = sin(πx), ut (x, 0) = 0, 0 ≤ x ≤ 1 Данный вид уравнений – частный случай волнового уравнения общего вида: c2 uxx = utt , 0 ≤ x ≤ 0, t ≥ 0 u(x, 0) = F(x) и ut (x, 0) = G(x) на [0, a] u(0, t) = u(a, t) = 0 10 Моделирование вибрации струны
  • 11. Необходимо найти решение задачи для значений x, заключённых между 0 и a, во все моменты времени от 0 до T. Разобьём пространственный интервал на n частей и временной интервал на m частей: ▪ h = a / n – шаг по пространству ▪ k = T / m – шаг по времени Если шаг k будет слишком большим (kc / h > 1), то дискретизация будет слишком грубой и решение не будет сходиться к истинному. Если шаг k будет слишком малым (kc / h < 1), то ошибки округления будут накапливаться и это также уменьшит точность решения. Поэтому оптимальным вариантом будет случай, когда kc / h = 1. Пусть ▪ xi = ih, i = 0, 1, …, n ▪ tj = jk, j = 0, 1, …, m Тогда ▪ ui , j = u(xi , tj ) – смещение струны в позиции xi в момент времени tj 11 Моделирование вибрации струны
  • 12. Используя полученные формулы для апроксимации производной f''(x) ≈ [f(x + h) – 2f(x) + f(x – h)] / h2 можно расчитать вторые производные uxx и utt : uxx (xi , tj ) ≈ [u(xi + h, tj ) – 2u(xi , tj ) + u(xi – h, tj )] / h2 ≈ [ui+1,j – 2ui,j + ui–1,j ] / h2 utt (xi , tj ) ≈ [u(xi , tj + k) – 2u(xi , tj ) + u(xi , tj – k)] / k2 ≈ [ui,j+1 – 2ui,j + ui,j–1 ] / k2 Эти формулы теперь можно подставить в исходное волновое уравнение! 12 Моделирование вибрации струны k T x a ui,j = u(xi , tj ) ui, j+1 ui, j–1 ui–1, j+1 ui+1, j+1 ui+1, j–1 ui–1, j–1 ui–1, j ui+1, j
  • 13. Используя полученные формулы для апроксимации производной f''(x) ≈ [f(x + h) – 2f(x) + f(x – h)] / h2 можно расчитать вторые производные uxx и utt : uxx (xi , tj ) ≈ [u(xi + h, tj ) – 2u(xi , tj ) + u(xi – h, tj )] / h2 ≈ [ui+1,j – 2ui,j + ui–1,j ] / h2 utt (xi , tj ) ≈ [u(xi , tj + k) – 2u(xi , tj ) + u(xi , tj – k)] / k2 ≈ [ui,j+1 – 2ui,j + ui,j–1 ] / k2 Эти формулы теперь можно подставить в исходное волновое уравнение и выразить смещение: ui,1 ≈ L / 2 × (ui+1, 0 + ui-1, 0 ) + (1 – L) ui, 0 + kG(ih) ui, j + 1 ≈ 2 × (1 – L) × uij + L (ui+1, j + ui – 1, j ) – ui, j – 1 13 Моделирование вибрации струны
  • 14. 14 Последовательная версия программы #define F(x) sin(M_PI * (x)) // Начальная позиция струны #define G(x) 0.0 // Начальная скорость струны #define a 1.0 // Длина струны #define c 2.0 // Константа #define m 20 // Количество временных интервалов #define n 8 // Количество пространственных интервалов #define T 1.0 // Временной отрезок моделирования int main() { const double h = a / n; // Шаг по пространству const double k = T / m; // Шаг по времени const double L = (k * c / h) * (k * c / h); double u[m + 1][n + 1]; // Смещения струны for (j = 0; j <= m; j++) // Смещение на концах струны u[j][0] = u[j][n] = 0; for (i = 1; i < n; i++) // Смещение в начальный момент времени u[0][i] = F(i * h); for (i = 1; i < n; i++) // Смещение в момент, следующий после начального u[1][i] = (L / 2.0) * (u[0][i + 1] + u[0][i - 1]) + (1.0 - L) * u[0][i] + k * G(i * h); for (j = 1; j < m; j++) // Смещение в остальные моменты времени for (i = 1; i < n; i++) u[j + 1][i] = 2.0 * (1.0 - L) * u[j][i] + L * (u[j][i + 1] + u[j][i - 1]) - u[j - 1][i]; for (j = 0; j <= m; j++) { // Печать результатов for (i = 0; i <= n; i++) printf("%6.3f ", u[j][i]); putchar('n'); }
  • 15. Новое значение u[j + 1][i] зависит от значений u[j][i - 1], u[j][i], u[j][i + 1] и u[j - 1][i]: 15 Параллельный алгоритм моделирования вибрации струны u[j+1][i] u[j][i+1]u[j][i-1] u[j-1][i] u[j][i] Вычисление смещения в конкретной точке для различных моментов времени полностью последовательно: u[j + 1][i] зависит от u[j][i] и u[j - 1][i]. Поэтому декомпозицию для распараллеливания необходимо выполнять по пространству.
  • 16. Разобьём n интервалов струны между p процессами, каждый получит n / p элементов. Любой процесс на очередном временном шаге вычисляет значения n / p элементов, при этом все значения, кроме крайних элементов, он может рассчитать самостоятельно, а для крайних (отмечены цветом) необходимо получить значения от соседних процессов (помечены пунктиром): 16 Процесс k j + 1 j j - 1 ... i i + 1 ... k * n / p Т.о., схема взаимодействия процесов: Процесс k ... i i + 1 ... k * n / p Процесс k – 1 j + 1 j j - 1 Процесс k + 1 Параллельный алгоритм моделирования вибрации струны
  • 17. Т.о., схема взаимодействия процесов: 17 Процесс k ... i i + 1 ... k * n / p Процесс k – 1 j + 1 j j - 1 Процесс k + 1 Параллельный алгоритм моделирования вибрации струны Для удобства программирования рекомендуется ввести дополнительный столбец для обмена граничными элементами: Процесс k ... Процесс k – 1 Процесс k + 1 ...... ...
  • 18. Для сокращения количества обменов на каждой итерации рассчитывается сразу несколько временных шагов. При этом передаётся сразу несколько элементов 18 Параллельный алгоритм моделирования вибрации струны Процесс k j + 1 j j - 1 Процесс k + 1 ... ... Процесс k j + 1 j j - 1 Процесс k + 1 ... ... j + 2 j + 1 j j - 1 Процесс k + 1 j + 2 ...... j + 3 Процесс k Передаётся один элемент, рассчитывается один шаг по времени. Передаётся два элемента, рассчитывается два шага по времени, один элемент избыточный. Передаётся три элемента, рассчитывается три шага по времени, три элемента вычисляются избыточно.
  • 19. Увеличение граничных элементов (временных шагов, рассчитываемых за одну итерацию) приводит к следующим последствиям: 1. Увеличение длины сообщения. 2. Уменьшение частоты передачи сообщений (уменьшение латентности). 3. Добавление избыточных вычислений. Рассчитаем количество избыточно вычисленных элементов. Если с каждой стороны области k граничных элементов, тогда сообщение длины k отправляется и присылается от соседних процессов каждые k итераций. Число избыточно рассчитанных элементов: k – 1 i = k (k – 1) / 2 i = 1 График зависимости накладных расходов от числа граничных элементов: 19 Параллельный алгоритм моделирования вибрации струны ∑ Накладныерасходы Число граничных элементов Увеличение числа граничных элементов позволяет сократить накладные расходы до точки, после которой время выполнения избыточных вычислений станет превышать пользу от сокращения числа информационных обменов.
  • 21. Рассматривается параллельная версия программы определения стационарного распределенгия тепла для тонкой прямоугольной пластины. Задача стационарного распределения тепла в общем случае описывается уравнением Пуассона: uxx + uyy = f(x, y), 0 ≤ x ≤ a, 0 ≤ y ≤ b с заданными граничными условиями (значение функции на границе области): u(x, 0) = G1 (x) и u(x, b) = G2 (x) 0 ≤ x ≤ a u(0, y) = G3 (y) и u(a, y) = G4 (y) 0 ≤ y ≤ b Если область прямоугольная, то задача называется задачей Дирихле. Если функции G1 , G2 , G3 и G4 непрерывны и функция f непрерывна внутри прямоугольной области, то задача имеет единственное решение. Для моделирования составим прямоугольную сетку. Каждая точка (xi , yj ) этой сетки соответствует конкретной координате (x, y) внутри прямоугольной области. Моделирование состоит в периодическом вычислении значений во внутренних узлах сетки. 21 Задача стационарного распределения тепла
  • 22. Для моделирования составим прямоугольную сетку. Каждая точка (xi , yj ) этой сетки соответствует конкретной координате (x, y) внутри прямоугольной области. Моделирование состоит в периодическом вычислении значений во внутренних узлах сетки. 22 G1 (x) G4 (x) G2 (x) G1 (x) G4 (x) G2 (x) G3 (x)G3 (x) (xi , yj ) uxx + uyy = f(x, y) 0 a b x y Задача стационарного распределения тепла
  • 23. Разобьём пространственную размерность x на n частей и пространственную размерность y на m частей. Определим h = x / n, k = y / m. Вычислим приблеженно вторые производные по x и по y: uxx (xi , yj ) ≈ [ u(xi + h, yj ) – 2u(xi , yj ) + u(xi – h, yj ) ] / h2 ≈ ≈ [ ui + 1, j – 2ui, j + ui – 1, j ] / h2 uyy (xi , yj ) ≈ [ ui, j + 1 – 2ui, j + ui, j – 1 ] / k2 Подставляя выражения для производных в уравнение Пуассона, получаем: (ui + 1, j – 2ui, j + ui – 1, j ) / h2 + (ui, j + 1 – 2ui, j + ui, j – 1 ) / k2 = f(xi , yj ) Положим λ = k / h. После серии элементарных преобразований получаем: ui, j = [ λ2 (ui + 1, j + ui – 1, j ) + ui, j + 1 + ui, j – 1 – k2 fi, j ] / [ 2 (1 + λ2 ) ] Теперь рассмотрим конкретную задачу. Необходимо выполнить моделирование для тонкой стальной пластины, с трёх сторон окружённая водяным паром (температура 100° С), а с четвёртой стороны граничащая со льдом (температура 0°С). Сверху и снизу пластины находится изолирующий слой. Цель моделирования – отыскать стационарное распределение температуры во внутренних точках пластины. 23 Задача стационарного распределения тепла
  • 24. Теперь рассмотрим конкретную задачу. Необходимо выполнить моделирование для тонкой стальной пластины, с трёх сторон окружённая водяным паром (температура 100°С), а с четвёртой стороны граничащая со льдом (температура 0°С). Сверху и снизу пластины находится изолирующий слой. Цель моделирования – отыскать стационарное распределение температуры во внутренних точках пластины. 24 ui + 1, j ui, j + 1 ui, j – 1 ui – 1, j ui, j Поскольку точки распределены равномерно, то h = k и λ = 1. Поскольку пластина изолирована, тепло не проникает внутрь и распространяется только с границ. Это означает, что fi, j = 0. Поэтому можно записать: ui, j = (ui + 1, j + ui – 1, j + ui, j + 1 + ui, j – 1 ) / 4 Начиная с начальных значений, по известным значениям можно рассчитывать все последующие значения wi, j – и так до тех пор, пока значения не будут сходиться. Новое значение ui,j зависит от четырёх предыдущих ui, j – 1 , ui + 1, j , ui, j + 1 , ui – 1, j Задача стационарного распределения тепла
  • 25. 25 Последовательная программа #include <stdio.h> #include <math.h> #define N 100 #define EPS 0.01 int main(int argc, char *argv[]) { double diff; // Изменение значений int i, j; double mean; // Среднее значение на границах double u[N][N]; // Старые значения double v[N][N]; // Новые значения // Установить граничные значения и расчитать среднее значение на границах mean = 0.0; for (i = 0; i < N; i++) { u[i][0] = u[i][N - 1] = u[0][i] = 100.0; u[N - 1][i] = 0.0; mean += u[i][0] + u[i][N - 1] + u[0][i] + u[N - 1][i]; } mean /= (4.0 * N); // Проинициализировать внутренние значения for (i = 1; i < N - 1; i++) for (j = 1; j < N - 1; j++) u[i][j] = mean;
  • 26. 26 Последовательная программа // Расчитать стационарное состояние for (;;) { diff = 0.0; for (i = 1; i < N - 1; i++) for (j = 1; j < N - 1; j++) { v[i][j] = (u[i - 1][j] + u[i + 1][j] + u[i][j - 1] + u[i][j + 1]) / 4.0; if (fabs(v[i][j] - u[i][j]) > diff) diff = fabs(v[i][j] - u[i][j]); } if (diff <= EPS) break; for (i = 1; i < N - 1; i++) for (j = 1; j < N - 1; j++) u[i][j] = v[i][j]; } // Распечатать решение for (i = 0; i < N; i++) { for (j = 0; j < N; j++) printf("%6.2f ", u[i][j]); putchar('n'); } } u[i + 1] [j] u[i][j + 1]u[i][j – 1] u[i – 1][j] v[i][j]
  • 27. 27 Последовательная программа // Расчитать стационарное состояние for (;;) { diff = 0.0; for (i = 1; i < N - 1; i++) for (j = 1; j < N - 1; j++) { v[i][j] = (u[i - 1][j] + u[i + 1][j] + u[i][j - 1] + u[i][j + 1]) / 4.0; if (fabs(v[i][j] - u[i][j]) > diff) diff = fabs(v[i][j] - u[i][j]); } if (diff <= EPS) break; for (i = 1; i < N - 1; i++) for (j = 1; j < N - 1; j++) u[i][j] = v[i][j]; } // Распечатать решение for (i = 0; i < N; i++) { for (j = 0; j < N; j++) printf("%6.2f ", u[i][j]); putchar('n'); } } u[i + 1] [j] u[i][j + 1]u[i][j – 1] u[i – 1][j] v[i][j] Вычисление новых значений v[i][j] температуры можно выполнять параллельно! Вычислительная сложность (для квадратной решётки): T = O(n2 )
  • 28. 28 Параллельный алгоритм P0 P1 … Pp P0 P1 P2 P3 P4 P5 Pp… … … … … … … P6 P7 Декомпозиция по строкам Декомпозиция по блокам
  • 29. 29 Параллельный алгоритм Декомпозиция по строкам Декомпозиция по блокам P0 P1 … Pp P0 P1 P2 P3 P4 P5 Pp… … … … … … … P6 P7 Вычислительная сложность: O(n2 / p) Коммуникационная сложность: O(n) Общее количество пересылаемых элементов на одной итерации: O(np) Вычислительная сложность: O( [n / sqrt(p)]2 ) Коммуникационная сложность: O(n / sqrt(p)) Общее количество пересылаемых элементов на одной итерации: O(n sqrt(p))