• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

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

knefedev

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

Код:
#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(); должна была завершить все процессы?
 
V

vital

Не совсем.
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.
Процессы завершится должны сами. Это просто очищает записи об их состоянии и выходит из системы передачи. Ну или как-то так=) На истину в первом лице не претендую.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!