logo
Лекции - Чернышева

3. Алгоритм распараллеливания.

Воспользуемся функциональным видом параллелизма. Общее число используемых процессов size n-1, где n – число уравнений в системе. Организуем цикл по времени от tнач до tмакс с шагом τ. В начальный момент времени все процессы знают начальные значения параметров.

На каждой итерации цикла будет выполняться следующее:

  1. все процессы кроме нулевого вычисляют значения правых частей в конкретный момент времени. Причём процесс №1 вычисляет , процесс№2 - , процесс № size-1 - ;

  2. все процессы, кроме нулевого процесса, вычисляют прогнозируемые значения параметров, причём процесс с rank=1 вычисляет , процесс с rank=2 - , процесс с rank=size-1 - ;

  3. рабочие процессы пересылают на нулевой процесс вычисленные прогнозируемые значения параметров. Нулевой процесс собирает их в массив и рассылает их на рабочие процессы;

  4. все процессы, кроме нулевого процесса, вычисляют прогнозируемые значения правых частей, причём процесс с №1 вычисляет , процесс с №2 - , процесс с №size-1 - ;

  5. все процессы, кроме нулевого процесса, вычисляют новые скорректированные значения параметров, причём процесс с №1 вычисляет , процесс с №2 - , процесс с №size-1 - ;

  6. рабочие процессы пересылают на нулевой процесс вычисленные скорректированные значения параметров. Нулевой процесс собирает полученные значения в массив и рассылает его на все рабочие процессы;

  7. все процессы одновременно делают шаг по времени tk+1=tk

  8. все процессы проверяют условие окончания итерационного процесса, если итерационный процесс не закончен, то переходим к пункту №1, иначе – пункт№9

  9. нулевой процесс печатает вычисленные значения параметров

Действие

Rank

1

2

3

4

5

6

7

8

9

0

□□□□

□□□□

tk+1=tk

tk+1≤tmax

Печать Xk+1

1

tk+1=tk

tk+1≤tmax

2

tk+1=tk

tk+1≤tmax

Size -1

tk+1=tk

tk+1≤tmax