ВУЗ:
Составители:
Рубрика:
- 12 -
for (i=0; i<i_procs; i++) // всем процессам от 0 до i_procs-1
MPI_Send(&N, 1, MPI_INT, i, 0, MPI_COMM_WORLD);
Области передачи сообщений коллективных функций не пересекаются с
таковыми для функций ‘точка-точка’ (например, с помощью
MPI_Recv
при-
нять сообщение от
MPI_Bcast
невозможно).
При программировании на С список header-файлов обязательно должен
быть дополнен строкой
#include "mpi.h"
(i
nclude 'mpif.h'
в случае Fortran’а).
Общая структура простейшей параллельной С-программы приблизительно
такова (типовой пример MPI-программы в стиле SIMD); процесс с нулевым
номером обычно считают главным (MASTER), другие процессы – подчинен-
ными (SLAVE):
#include "mpi.h"
// иные необходимые header’ы для C-программы
int
main(int argc, char **argv)
{
int me, size;
MPI_Init (&argc, &argv); // инициализировать MPI
MPI_Comm_rank (MPI_COMM_WORLD, &me); // номер данной ветви
MPI_Comm_size (MPI_COMM_WORLD, &size); // общее число ветвей
// …совместных код для всех ветвей (включая MASTER-процесс)
if (me == 0) // это главная ветвь (MASTER-процесс)
{
//… выполнить в главной ветви
}
else
if (me != 0) // это все ветви отличные от главной (MASTER’а-процесса)
{
//… выполнить во всех рабочих (SLAVE) ветвях
}
// дальнейшие варианты не так часто встречаются,
// однако формально должны быть рассмотрены
else
if (me == 1) // это ветвь номер 1
{
//… код для ветви 1
}
else
if (me == 2) // это ветвь номер 2
{
//… код для ветви 2
}
MPI_Finalize(); // закрыть MPI
} // конец функции main
- 12 - for (i=0; i
Страницы
- « первая
- ‹ предыдущая
- …
- 10
- 11
- 12
- 13
- 14
- …
- следующая ›
- последняя »