4. Ускорение и точность вычислений.
Ускорение достигается за счёт одновременного вычисления коэффициентов R1 R2 R3 R4 и Xk+1 . Потери времени за счёт пересылок. Потери точности при правильном выборе шага τ не происходит.
Пример: решить задачу Коши методом Рунге-Кутта2.
τ =0.01; t0=0.0; tmax=1.0
Size = 4
#include<stdio.h>
# include<math.h>
# include<mpi.h>
void main (inf argc, char **argv) {
MPI_Init (&argc,&argv);
int size, rank;
MPI_Comm_size (MPI_COMM_WORLD,& size);
MPI_Comm_rank (MPI_COMM_WORLD,& rank);
const int n=3;
double x[n]={1.0, 2.0, 4.0}
xx[n], f, time=0.0, tau=0.01;
tmax = 1.0;
MPI_Status status;
const int msgtag = 7;
int j = rank-1;
do {
if (!rank) {
for (int i=0; i<n; i++)
MPI_Recv (&xx[i],1, MPI_DOUBLE,i+1,msgtag, MPI_COMM_WORLD,& Status);
for (i=0; i<n; i++)
MPI_Ssend (xx, n, MPI_DOUBLE, i+1, msgtag, MPI_COMM_WORLD);
for (i=0; i<n; i++)
MPI_Recv (& x[i],1, MPI_DOUBLE,i+1,msgtag, MPI_COMM_WORLD,& Status);
for (i=0; i<n; i++)
MPI_Ssend (x, n, MPI_DOUBLE, i+1, msgtag, MPI_COMM_WORLD);
}
……….
else {
switch (rank) {
case 1: xx[j]=x[0]+tau*(3.0*x[0]-2.0*x[1]+x[2])/2.0;
break;
case 2: xx[j]=x[1]+tau*(pow(x[0],3.0)-pow (x[2],3.0))/2.0;
break;
case 3: xx[j]=x[2]+tau*(x[0]+x[1]-pow(x[2],2.0))/2.0;
break;
}
MPI_Ssend (& xx[j], 1, MPI_DOUBLE, 0, msgtag, MPI_COMM_WORLD);
MPI_Recv (xx, n, MPI_DOUBLE,0,msgtag, MPI_COMM_WORLD,& Status);
Switch (rank) {
case 1: f=3.0*xx[0] – 2.0*xx[1]+xx[2];
break;
case 2: f=pow (xx[0],3.0)-pow(x[2],3.0);
break;
case 3: f=xx[0]*xx[1]-pow()xx[2],2.0);
break;
}
x[j]+=tau*f;
MPI_Ssend (& x[j],1, MPI_DOUBLE, 0, msgtag, MPI_COMM_WORLD);
MPI_Recv (x, n, MPI_DOUBLE,0,msgtag, MPI_COMM_WORLD,& Status);
} //else
time + = tau;
} while (time <=tmax);
if (! rank) {
for (int i=0; i<n; i++)
print (“x[%d] = %7.2f’’,i,x[i]);
print (“\n”);
}
MPI_Finalize();
}
- Содержание курса
- Общие сведения.
- Топологии Виды топологий
- Программирование «Трубы»
- Программирование «Звезды»
- Программирование «Клика»
- Синхронный обмен данными
- Функции синхронного обмена данными
- Примеры:
- Задание 1:
- Задание 2:
- Задание 3:
- Асинхронный обмен данными
- Функции необходимые для асинхронного обмена данными
- Пример:
- Определение времени вычисления на Parsytec.
- Определение времени в программе
- Структура компьютера
- Константы, типы данных, структуры mpi
- Тип данных mpi_Datatype
- Предопределённые константы
- Сообщения
- Функции mpi
- Функция передачи данных с блокировкой
- Дополнительные функции
- Виды параллелизма Геометрический (распараллеливание по пространству)
- Функциональный (распараллеливание по процессам)
- Конвейерный
- Параллелизм типа принятия коллективного решения
- Ускорение и эффективность вычислений на мвс
- Метод Рунге-Кутта 4
- 2. Расчётные формулы:
- 3. Алгоритм распараллеливания.
- Метод прогноза коррекции
- 2. Расчётные формулы
- 3. Алгоритм распараллеливания.
- 4. Ускорение вычислений.
- 4. Ускорение и точность вычислений.
- Решение уравнений в частных производных
- Колебания мембраны
- 2. Расчетные формулы
- Решение стационарных уравнений на мвс
- 2. Расчётные формулы
- Алгоритм распараллеливания.
- Ускорение вычислений
- Оптимизация на мвс
- Расчётные формулы
- Алгоритм распараллеливания
- Ускорение вычислений.