Написание нескольких файлов с использованием стандартных функций ввода-вывода 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