Первой программой на C, которую пишет большинство начинающих программистов, является программа, выводящая сообщение "Привет, мир!". Она просто печатает сообщение "Привет, мир!"на терминал. Многопроцессорный вариант содержит процессы, каждый из которых посылает приветствие другому.
В MPI процессы, участвующие в выполнении параллельной программы, идентифицируются последовательностью неотрицательных целых чисел. Если в выполнении программы участвуют P процессов, то они будут иметь номера (ранги) 0, 1, ..., P-1. В следующей программе каждый процесс с рангом, не равным 0, посылает сообщение в процесс 0, а процесс 0 выводит все сообщения, которые он получил:
#include ''mpi.h''
main(int argc, char** argv) {
int my_rank; /* Ранг процесса */
int p; /* Количество процессов */
int source; /* Ранг посылающего */
int dest; /* Ранг принимающего */
int tag = 50; /* Тэг сообщений */
char message[100]; /* Память для сообщения */
MPI_Status status; /* Статус возврата */
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
MPI_Comm_size(MPI_COMM_WORLD, &p);
if (my_rank != 0) {
sprintf(message, ''Привет из процесса %d!'', my_rank);
dest = 0;
/* Используется strlen(message)+1
чтобы включить '\0' */
MPI_Send(message, strlen(message)+1,
MPI_CHAR, dest, tag, MPI_COMM_WORLD);
} else { /* my_rank == 0 */
for (source = 1; source < p; source++) {
MPI_Recv(message, 100, MPI_CHAR, source, tag,
MPI_COMM_WORLD, &status);
printf(''%s\n'', message);
}
}
MPI-Finalize();
} /* main */
Если программу откомпилировать и запустить для четырех процессов, она выведет:
Привет из процесса 2!
Привет из процесса 3!