Презентации по MPI / 00. MPI введение
.pdfПрограммирование MPI
MPI – Message Passing Interface
●Стандарт, определяющий взаимодействие параллельных процессов независимо от целевой программно-аппаратной платформы
●API параллельного программирования для кластерных вычислительных систем
●Языки программирования:
–C
–Fortran
●http://www.mpi-forum.org - спецификация MPI-1.1
MPI – взаимодействие процессов
●Между парой процессов (point-to-point)
●Внутри группы процессов (multicast, broadcast)
●По заданной топологии
MPI – пример программы
mpirun <список узлов> <имя программы>
mpd
main () { rank <= 0, size <= N
}
mpd
main () { rank <= 1, size <= N
}
mpd
main () {
rank <= N - 1, size <= N
}
node-1 |
node-2 |
node-N |
qsub <количество процессов> <имя программы>
mpiexec <количество процессов> <имя программы>
pbs_mom |
|
pbs_mom |
|
pbs_mom |
|
|
|
|
|
main () { |
|
main () { |
|
main () { |
rank <= 0, |
|
rank <= 1, |
|
rank <= N - 1, |
size <= N |
|
size <= N |
|
size <= N |
} |
|
} |
|
} |
|
|
|
|
|
node-1 |
node-2 |
|
node-N |
MPI – основные понятия
●Коммуникатор – идентификатор множества процессов
–MPI_COMM_WORLD
–MPI_COMM_SELF
–MPI_COMM_NULL
●Возможность создания собственных коммуникаторов
–MPI_Comm_dup
–MPI_Comm_create
–MPI_Comm_split
MPI – основные понятия
●Виды функций
–Локальные (local) – функции, не выполняющие обмен данными с другими узлами
–Нелокальные (non-local) – функции, для завершения которых может потребоваться взаимодействие с другим узлом
–Коллективные (collective) – функции, для завершения которых обязателен их вызов во всех процессах группы
–Блокирующие (blocking)
–Неблокирующие (non-blocking)
MPI – нотация функций
●IN – вызов функции не меняет содержимого переменной
●OUT – вызов функции может изменить содержимое переменной
●INOUT – вызов функции использует и, возможно, изменяет содержимое переменной