From 9d8d5392b29f5cae3ab50063691072f1afc6a5c4 Mon Sep 17 00:00:00 2001 From: Albert Cheng Date: Wed, 2 Mar 2005 23:06:14 -0500 Subject: [PATCH] [svn-r10125] Purpose: Feature--to provide a standalone mode for t_mpi.c so that it can be built outside of PHDF5 environment. Description: Move definitions that are common to all parallel test programs to a new header file called testpar.h. Leave only Parallel HDF5 tests related definitions in testphdf5.h. Platforms tested: heping (pp) and modi4(PP). Copper was down. Misc. update: --- testpar/t_mpi.c | 2 +- testpar/testpar.h | 89 +++++++++++++++++++++++++++++++++++++++++++++ testpar/testphdf5.h | 78 ++++----------------------------------- 3 files changed, 98 insertions(+), 71 deletions(-) create mode 100644 testpar/testpar.h diff --git a/testpar/t_mpi.c b/testpar/t_mpi.c index 7b7a96b8f6..f7ca893202 100644 --- a/testpar/t_mpi.c +++ b/testpar/t_mpi.c @@ -26,7 +26,7 @@ * Last process opens the same file and verifies the data. */ -#include "testphdf5.h" +#include "testpar.h" /* FILENAME and filenames must have the same number of names */ const char *FILENAME[2]={ diff --git a/testpar/testpar.h b/testpar/testpar.h new file mode 100644 index 0000000000..3d4a5882f9 --- /dev/null +++ b/testpar/testpar.h @@ -0,0 +1,89 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* common definitions used by all parallel test programs. */ + +#ifndef TESTPAR_H +#define TESTPAR_H + +#include "h5test.h" + +/* Constants definitions */ +#define MAX_ERR_REPORT 10 /* Maximum number of errors reported */ + +/* Define some handy debugging shorthands, routines, ... */ +/* debugging tools */ + +#define MESG(x) \ + if (VERBOSE_MED) printf("%s\n", x); \ + +#define VRFY(val, mesg) do { \ + if (val) { \ + if (*mesg != '\0') { \ + MESG(mesg); \ + } \ + } else { \ + printf("Proc %d: ", mpi_rank); \ + printf("*** PHDF5 ERROR ***\n"); \ + printf(" Assertion (%s) failed at line %4d in %s\n", \ + mesg, (int)__LINE__, __FILE__); \ + ++nerrors; \ + fflush(stdout); \ + if (!VERBOSE_MED) { \ + printf("aborting MPI process\n"); \ + MPI_Finalize(); \ + exit(nerrors); \ + } \ + } \ +} while(0) + +/* + * Checking for information purpose. + * If val is false, print mesg; else nothing. + * Either case, no error setting. + */ +#define INFO(val, mesg) do { \ + if (val) { \ + if (*mesg != '\0') { \ + MESG(mesg); \ + } \ + } else { \ + printf("Proc %d: ", mpi_rank); \ + printf("*** PHDF5 REMARK (not an error) ***\n"); \ + printf(" Condition (%s) failed at line %4d in %s\n", \ + mesg, (int)__LINE__, __FILE__); \ + fflush(stdout); \ + } \ +} while(0) + +#define MPI_BANNER(mesg) do { \ + if (VERBOSE_MED || MAINPROCESS){ \ + printf("--------------------------------\n"); \ + printf("Proc %d: ", mpi_rank); \ + printf("*** %s\n", mesg); \ + printf("--------------------------------\n"); \ + } \ +} while(0) + +#define MAINPROCESS (!mpi_rank) /* define process 0 as main process */ + +#define SYNC(comm) do { \ + MPI_BANNER("doing a SYNC"); \ + MPI_Barrier(comm); \ + MPI_BANNER("SYNC DONE"); \ +} while(0) + +/* End of Define some handy debugging shorthands, routines, ... */ + +#endif /* TESTPAR_H */ diff --git a/testpar/testphdf5.h b/testpar/testphdf5.h index 283f916377..3b251f84f4 100644 --- a/testpar/testphdf5.h +++ b/testpar/testphdf5.h @@ -12,82 +12,21 @@ * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/* common definitions used by all parallel hdf5 test programs. */ + #ifndef PHDF5TEST_H #define PHDF5TEST_H -#include "h5test.h" +#include "testpar.h" + +#ifndef FALSE +#define FALSE 0 +#endif #ifndef TRUE #define TRUE 1 -#endif /* !TRUE */ +#endif -#ifndef FALSE -#define FALSE (!TRUE) -#endif /* !FALSE */ - -/* Define some handy debugging shorthands, routines, ... */ -/* debugging tools */ - -#define MESG(x) \ - if (VERBOSE_MED) printf("%s\n", x); \ - -#define VRFY(val, mesg) do { \ - if (val) { \ - if (*mesg != '\0') { \ - MESG(mesg); \ - } \ - } else { \ - printf("Proc %d: ", mpi_rank); \ - printf("*** PHDF5 ERROR ***\n"); \ - printf(" Assertion (%s) failed at line %4d in %s\n", \ - mesg, (int)__LINE__, __FILE__); \ - ++nerrors; \ - fflush(stdout); \ - if (!VERBOSE_MED) { \ - printf("aborting MPI process\n"); \ - MPI_Finalize(); \ - exit(nerrors); \ - } \ - } \ -} while(0) - -/* - * Checking for information purpose. - * If val is false, print mesg; else nothing. - * Either case, no error setting. - */ -#define INFO(val, mesg) do { \ - if (val) { \ - if (*mesg != '\0') { \ - MESG(mesg); \ - } \ - } else { \ - printf("Proc %d: ", mpi_rank); \ - printf("*** PHDF5 REMARK (not an error) ***\n"); \ - printf(" Condition (%s) failed at line %4d in %s\n", \ - mesg, (int)__LINE__, __FILE__); \ - fflush(stdout); \ - } \ -} while(0) - -#define MPI_BANNER(mesg) do { \ - if (VERBOSE_MED || MAINPROCESS){ \ - printf("--------------------------------\n"); \ - printf("Proc %d: ", mpi_rank); \ - printf("*** %s\n", mesg); \ - printf("--------------------------------\n"); \ - } \ -} while(0) - -#define MAINPROCESS (!mpi_rank) /* define process 0 as main process */ - -#define SYNC(comm) do { \ - MPI_BANNER("doing a SYNC"); \ - MPI_Barrier(comm); \ - MPI_BANNER("SYNC DONE"); \ -} while(0) - -/* End of Define some handy debugging shorthands, routines, ... */ /* Constants definitions */ #define DIM0 600 /* Default dataset sizes. */ @@ -103,7 +42,6 @@ #define BYCOL 2 /* divide into blocks of columns */ #define ZROW 3 /* same as BYCOL except process 0 gets 0 rows */ #define ZCOL 4 /* same as BYCOL except process 0 gets 0 columns */ -#define MAX_ERR_REPORT 10 /* Maximum number of errors reported */ /* File_Access_type bits */ #define FACC_DEFAULT 0x0 /* default */