/*
* example for MPI-2 I/O :
* content of one file is distributed to everybody
*
* for simplicity: File contains 100 int's
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
#define FILE "IN1"
#define SIZE 100
void check(int *a) {
int myid;
int i;
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
for (i=0;i<SIZE;i++) {
if (a[i] != 100 - i) {
printf("Task %d: error in data: a(%d) = %d, should be %d\n",
myid, i, a[i], 100-i);
return;
}
}
printf("Task %d: check ok\n", myid);
return;
}
void main(int argc, char *argv[]) {
MPI_File fh;
MPI_Status status;
int a[SIZE];
MPI_Init(&argc, &argv);
MPI_File_open(MPI_COMM_WORLD, FILE, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
MPI_File_set_view(fh, 0, MPI_INT, MPI_INT, "native", MPI_INFO_NULL);
MPI_File_read_all(fh, a, SIZE, MPI_INT, &status);
check(a);
MPI_File_close(&fh);
MPI_Finalize();
}