/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. * */ #include "mpi.h" #include #include #include "mpitest.h" static char MTEST_Descrip[] = "Test writing and reading an integer a particular file offset"; int main( int argc, char *argv[] ) { int errs = 0; int size, rank, i, errcode; MPI_File fh1, fh2; MPI_Comm comm; MPI_Status status; MTest_Init( &argc, &argv ); comm = MPI_COMM_WORLD; MPI_Comm_size( comm, &size ); MPI_Comm_rank( comm, &rank ); MPI_File_open( comm, "test.at", MPI_MODE_WRONLY | MPI_MODE_CREATE, MPI_INFO_NULL, &fh1 ); MPI_File_write_at( fh1, rank * sizeof(int), &rank, 1, MPI_INT, &status ); MPI_File_close( &fh1 ); MPI_Barrier(comm); errcode = MPI_File_open( comm, "test.at", MPI_MODE_RDONLY | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh2 ); if (errcode != MPI_SUCCESS) { char str[MPI_MAX_ERROR_STRING]; int len; MPI_Error_string( errcode, str, &len); errs++; fprintf( stderr, "%d: MPI_File_open() failed: %s\n", rank, str ); } else { MPI_File_read_at( fh2, rank * sizeof(int), &i, 1, MPI_INT, &status ); if (i != rank) { errs++; fprintf( stderr, "%d: i = %d\n", rank, i ); } MPI_File_close( &fh2 ); } MTest_Finalize( errs ); MPI_Finalize(); return 0; }