Hello Word посредством Mpi

  • Автор темы knefedev
  • Дата начала
K

knefedev

Гость
#1
Привет всем, не могу понять почему если в следующем коде

Код:
#include<mpi.h>
#include<stdio.h>
int main(int argc, char** argv)
{
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
printf("Hello, MPI world!);
MPI_Finalize();
rеturn 0;
}
переставить местами printf("Hello, MPI world!); и финализирующую функцию MPI_Finalize();


Код:
#include<mpi.h>
#include<stdio.h>
int main(int argc, char** argv)
{
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
MPI_Finalize();
printf("Hello, MPI world!);
rеturn 0;
}
то я получаю снова столько вызовов функции printf() сколько у меня процессов запущено. Ведь MPI_Finalize(); должна была завершить все процессы?
 

vital

Больной Компом Детектед
29.01.2006
2 432
40
codeby.net
#2
Не совсем.
MPI_FINALIZE()

int MPI_Finalize(void)

MPI_FINALIZE(IERROR)
INTEGER IERROR

This routines cleans up all MPI state. Once this routine is called, no MPI routine (even MPI_INIT) may be called. The user must ensure that all pending communications involving a process completes before the process calls MPI_FINALIZE.
Процессы завершится должны сами. Это просто очищает записи об их состоянии и выходит из системы передачи. Ну или как-то так=) На истину в первом лице не претендую.