1/* This is a quickie tester for netcdf-4.
2
3   This just excersizes MPI file I/O to make sure everything's working
4   properly. If this doesn't work, netcdf/HDF5 parallel I/O also won't
5   work.
6
7   $Id: tst_mpi_parallel.c,v 1.2 2009/08/19 15:58:57 ed Exp $
8*/
9
10#include <nc_tests.h>
11#include "err_macros.h"
12#include <mpi.h>
13
14#define FILE "tst_mpi_parallel.bin"
15
16int
17main(int argc, char **argv)
18{
19   /* MPI stuff. */
20   MPI_File fh;
21   int my_rankmpi_size;
22   int data_in;
23   MPI_Status status;
24
25   /* Initialize MPI. */
26   MPI_Init(&argc,&argv);
27   MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
28   MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
29   /*MPI_Get_processor_name(mpi_name, &mpi_namelen);*/
30   /*printf("mpi_name: %s size: %d rank: %d\n", mpi_name,
31     mpi_size, my_rank);*/
32
33   if (my_rank == 0)
34   {
35      printf("\n*** Testing basic MPI file I/O.\n");
36      printf("*** testing file create with parallel I/O with MPI...");
37   }
38
39   if (MPI_File_open(MPI_COMM_WORLDFILEMPI_MODE_RDWR | MPI_MODE_CREATE,
40                     MPI_INFO_NULL, &fh) != MPI_SUCCESSERR;
41   if (MPI_File_seek(fhmy_rank * sizeof(int), MPI_SEEK_SET) != MPI_SUCCESSERR;
42   if (MPI_File_write(fh, &my_rank, 1, MPI_INT, &status) != MPI_SUCCESSERR;
43   if (MPI_File_close(&fh) != MPI_SUCCESSERR;
44
45   /* Reopen and check the file. */
46   if (MPI_File_open(MPI_COMM_WORLDFILEMPI_MODE_RDONLY,
47                     MPI_INFO_NULL, &fh) != MPI_SUCCESSERR;
48   if (MPI_File_seek(fhmy_rank * sizeof(int), MPI_SEEK_SET) != MPI_SUCCESSERR;
49   if (MPI_File_read(fh, &data_in, 1, MPI_INT, &status) != MPI_SUCCESSERR;
50   if (data_in != my_rankERR;
51   if (MPI_File_close(&fh) != MPI_SUCCESSERR;
52
53   /* Shut down MPI. */
54   MPI_Finalize();
55
56   if (my_rank == 0)
57   {
58      SUMMARIZE_ERR;
59      FINAL_RESULTS;
60   }
61   return 0;
62}


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed