Это довольно простой вопрос с MPI, но я не могу обернуть его вокруг. У меня есть основная функция, которая вызывает другую функцию, использующую MPI. Я хочу, чтобы основная функция выполнялась в последовательном порядке, а другая функция выполнялась параллельно. Мой код выглядит следующим образом:
int main (int argc, char *argv[])
{
//some serial code goes here
parallel_function(arg1, arg2);
//some more serial code goes here
}
void parallel_function(int arg1, int arg2)
{
//init MPI and do some stuff in parallel
MPI_Init(NULL, NULL);
MPI_Comm_size(MPI_COMM_WORLD, &p);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
//now do some parallel stuff
//....
//finalize to end MPI??
MPI_Finalize();
}
Мой код работает нормально и получает ожидаемый результат, но проблема в том, что основная функция также запускается в отдельных процессах, поэтому серийный код выполняется более одного раза. Я не знаю, как это работает несколько раз, потому что я еще не назвал MPI_Init еще (если я печатаю в main, прежде чем я вызову функцию parallel_function, я вижу несколько printf)
Как я могу остановить свою программу, работающую параллельно после того, как я закончил?
Спасибо за любые ответы!