
Информатика_весна_2014_2.ppt
- Количество слайдов: 11
Классический тупик Возникает при использовании блокирующих функций передачи и приема сообщений Процесс 1. . . MPI_Send. . . MPI_Recv Процесс 2. . . MPI_Send. . . MPI_Recv Как избежать: 1) Смена мест операторов 2) Использование неблокирующих функций MPI_Isend и MPI_Irecv + оператор MPI_Wait
Передача сообщений без блокировки Возврат из функций происходит сразу после начала передачи. Переменная Request идентифицирует пересылку. MPI_Request; MPI_Status; … MPI_Isend(&array[5], 5, MPI_INT, 1, 1, MPI_COMM_WORLD, &Request) ; … MPI_Irecv(&array[0], 5, MPI_INT, 0, 1, MPI_COMM_WORLD, &Request) ; … MPI_Wait(&Request, &Status); /*Блокирующая операция. Возврат происходит после завершения операции, связанной с запросом request. В параметре status возвращается информация о законченной операции. */
Определение времени работы параллельной программы double MPI_Wtime(void) – возвращает астрономическое время в секундах (вещественное число), произошедшее с некоторого момента в прошлом. Разность возвращаемых значений покажет время работы данного участка. Пример: double begin, end, total; begin = MPI_Wtime(); …. end = MPI_Wtime(); total = end – begin;
Одномерное однородное уравнение теплопроводности Постановка задачи:
Одномерное однородное уравнение теплопроводности Основное уравнение: Конечно-разностная аппроксимация:
Одномерное однородное уравнение теплопроводности Окончательно: где: - коэффициент температуропроводности, - шаг по времени, - шаг по пространству
Как распараллеливать относится к процессу 0 относится к процессу 1 Как процессу 0 получить величину в точке ? Процесс 1 должен отослать сообщение, т. е. величину !
Как распараллеливать относится к процессу 0 относится к процессу 1 Как процессу 1 получить величину в точке ? Процесс 1 должен отослать сообщение, т. е. величину !
Как распараллеливать 1 2 0 3 4 5 0. 2 2 3 4 5 7 9 6 10 11 0. 9 8 0. 5 относится к процессу 0 1 6 1 относится к процессу 1 7 8 9 10 11
Как распараллеливать обмен граничными значениями массивов относится к процессу 0 граничное условие слева относится к процессу 1 граничное условие справа SPMD-модель (Single Program Multiple Data) параллельного программирования.
Отсылка и получение • /* отсылка процессу номер i: */ • MPI_Send(&buf, 1, MPI_DOUBLE, i, tag, MPI_COMM_WORLD) ; • /* получение от процесса номер i: */ • MPI_Recv (&buf, 1, MPI_DOUBLE, i, tag, MPI_COMM_WORLD, &Status);
Информатика_весна_2014_2.ppt