- •Архитектуры параллельных систем. Средства программирования
- •Параллельная архитектура с распределенной памятью
- •Параллельная архитектура с распределенной памятью. Топология 2D решетка (тор)
- •Параллельная архитектура с распределенной памятью. Топология гиперкуб
- •Параллельная архитектура с общей памятью
- •Подходы к разработке программ для параллельных систем. Средства программирования
- •Программирование в модели с распределенной памятью.
- •История и технические сведения
- •О программировании на MPI.
- •Группы процессов - ключевое понятие. Процессы могут объединяться в группы, один процесс может
- •После запуска все процессы входят в группу MPI_COMM_WORLD.
- •Первая программа на MPI
- •Общие функции MPI.
- •5.Определение астрономического времени на процессоре DOUBLE PRECISION MPI_WTIME (ERR)
- •Измерение времени в MPI
- •Запустить программы
- •Сообщения .
После запуска все процессы входят в группу 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 процессами (операции типа точка-точка) Передача сообщений между многими процессами (групповые операции)
Блокированные – неблокированные.
Каждая передающая функция, кроме того, в режимах : , буферизованный , с синхронизацией , по готовости.
