• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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