Написание нескольких файлов с использованием стандартных функций ввода-вывода Unix и добавления ранга MPI

Следующая функция выдает ошибку при работе с любым количеством процессов. Может кто-то любезно сказать мне, почему. Я использую MPICH 3.1. (Это не идеальный подход, но я пытаюсь понять основы ввода / вывода MPI - просто говорю, что пример должен работать).

#include<stdio.h>
#include<mpi.h>

#define BUF 100

void main(int argc, char *argv[])
{
int buf[BUF], rank, loop_i ;
FILE *fp ; 
char filename[BUF];  


MPI_Init(&argc, &argv);

MPI_Comm_rank(MPI_COMM_WORLD, &rank);

for(loop_i = 0 ; loop_i <= BUF - 1 ; loop_i++)
    buf[loop_i] = rank * BUF + loop_i ; 

sprintf(filename, "testfile.%d", rank);
fp = fopen(filename, "w");
fwrite(buf, sizeof(int), BUF, fp);
fclose(fp); 

MPI_Finalize();
}

При компиляции я получаю:

mpiio_2.c: In function ‘main’:
mpiio_2.c:11: warning: return type of ‘main’ is not ‘int’
ld: warning: duplicate dylib /usr/lib/libgcc_s.1.dylib

Во время работы с 4 процессами:

=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   PID 4584 RUNNING AT sepultrite7432.local
=   EXIT CODE: 224
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES

0 ответов

Другие вопросы по тегам