Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / lecture-2.ppt
Скачиваний:
2
Добавлен:
11.06.2024
Размер:
121.86 Кб
Скачать

После запуска все процессы входят в группу MPI_COMM_WORLD.

При запуске программы variant1 командой

mpirun –np N variant1

процессы в группе MPI_COMM_WORLD перенумерованы от 0 до N-1.

Таким образом, каждый процесс имеет уникальный атрибут – номер процесса.

Строго говоря, два атрибута – коммуникатор и номер процесса в коммуникаторе.

Например, процесс может иметь атрибуты MY_WORLD 7

или

MPI_COMM_WORLD 13

Первая программа на MPI

PROGRAM HELLO include 'mpif.h'

INTEGER ERR, SIZE, RANK

CИнициализация MPI CALL MPI_INIT (ERR)

CОпределение размера SIZE группы MPI_COMM_WORLD CALL MPI_COMM_SIZE (MPI_COMM_WORLD,SIZE,ERR)

CОпределение каждым процессом своего номера RANK в группе CALL MPI_COMM_RANK (MPI_COMM_WORLD,RANK,ERR)

WRITE (* , *) ' Hello, world ! ', RANK, ' Process from ', SIZE

CЗавершение MPI

CALL MPI_FINALIZE(ERR) END

Общие функции MPI.

1.Инициализация MPI

MPI_INIT (ERR)

INTEGER ERR

Остальные функции MPI могут быть вызваны только после этой функции Выполняется только 1 раз

2.Завершение MPI MPI_FINALIZE(ERR)

INTEGER ERR

Обращение к функциям MPI после этой запрещены

3.Определение размера SIZE группы COMM MPI_COMM_SIZE (COMM,SIZE,ERR)

INTEGER COMM,SIZE,ERR

SIZE – возвращает число процессов в коммуникаторе COMM

4.Определение каждым процессом своего номера RANK в группе MPI_COMM_RANK (MPI_COMM_WORLD,RANK,ERR)

INTEGER COMM,SIZE,ERR

RANK – возвращает номер процесса в коммуникаторе COMM

5.Определение астрономического времени на процессоре DOUBLE PRECISION MPI_WTIME (ERR)

INTEGER ERR

Выдает астрономическое время в секундах, прошедшее с некоторого момента в прошлом

Гарантируется, что момент времени, используемый в качестве точки отсчета, не будет изменен за пока процесс выполняется

Таймеры разных процессов могут быть несинхронизованы (обычно - синхронизованы)

MPI_WTIME_IS_GLOBAL = 1 - синхронизованы MPI_WTIME_IS_GLOBAL = 0 - не синхронизованы

Еще необходимы 2 функции –

Отправить сообщение Принять сообщение,

чтобы получить минимальный набор для написания параллельной программы

Всего – 6 ! А не 125 !

Измерение времени в MPI

PROGRAM Example1 include 'mpif.h'

INTEGER ERR, SIZE, RANK

DOUBLE PRECISION time_start, time_finish

CИнициализация MPI CALL MPI_INIT (ERR)

time_start = MPI_WTIME (ERR)

CОпределение каждым процессом своего номера RANK в группе CALL MPI_COMM_RANK (MPI_COMM_WORLD,RANK,ERR)

WRITE (* , *) ' My Start time: ', time_start, RANK, ' Process'

CОпределение размера SIZE группы MPI_COMM_WORLD CALL MPI_COMM_SIZE (MPI_COMM_WORLD,SIZE,ERR) WRITE (* , *) ' Hello, world ! ', RANK, ' Process from ', SIZE

time_finish = time_start - MPI_WTIME (ERR)

WRITE (* , *) ' My Time: ', time_finish, RANK, ' Process'

CЗавершение MPI

CALL MPI_FINALIZE(ERR) END

Запустить программы

1.Логины-пароли для fire – в почте Сетевой адрес компьютера - fire.applmat.ru

2.ssh – по почте

3.книга по Unix (Linux)

командный интерпретатор bash

Midnight Commander (mc). + ssh для работы с файлами

Сообщения .

Сообщение – это набор данных.

Атрибуты – номер отправителя, номер получателя, тип данных.

Тэг (tag) или идентификатор сообщения – по тэгу принимающий процесс может различить сообщения, пришедшие от одного и того же посылающего процесса.

0 - MPI_TAG_UP (32767)

Код ошибки. MPI_SUCCESS.

Передача сообщений между 2 процессами (операции типа точка-точка) Передача сообщений между многими процессами (групповые операции)

Блокированные – неблокированные.

Каждая передающая функция, кроме того, в режимах : , буферизованный , с синхронизацией , по готовости.

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