diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2002-07-15 15:21:05 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2002-07-15 15:21:05 (GMT) |
commit | c3b0c0f3c4ed622450862fdfd2ade5eb96d4ef1a (patch) | |
tree | a69f2b7a56c4009c3a5ed7e39e5269f03d6d63fa /perform/pio_perf.c | |
parent | 004988d1f1276e6fedabb37db290cff351508506 (diff) | |
download | hdf5-c3b0c0f3c4ed622450862fdfd2ade5eb96d4ef1a.zip hdf5-c3b0c0f3c4ed622450862fdfd2ade5eb96d4ef1a.tar.gz hdf5-c3b0c0f3c4ed622450862fdfd2ade5eb96d4ef1a.tar.bz2 |
[svn-r5798] Purpose:
New feature.
Description:
Added MPI-posix VFL driver support.
Platforms tested:
FreeBSD 4.6 (sleipnir) w/parallel & IRIX64 6.5 (modi4) w/parallel
Diffstat (limited to 'perform/pio_perf.c')
-rw-r--r-- | perform/pio_perf.c | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/perform/pio_perf.c b/perform/pio_perf.c index 5ddac67..a36cce5 100644 --- a/perform/pio_perf.c +++ b/perform/pio_perf.c @@ -117,9 +117,9 @@ static const char *progname = "h5perf"; * adding more, make sure that they don't clash with each other. */ #if 1 -static const char *s_opts = "a:A:B:cCd:D:e:F:hi:Ino:p:P:stT:wx:X:"; +static const char *s_opts = "a:A:B:cCd:D:e:F:hi:Imno:p:P:stT:wx:X:"; #else -static const char *s_opts = "a:A:bB:cCd:D:e:F:hi:Ino:p:P:stT:wx:X:"; +static const char *s_opts = "a:A:bB:cCd:D:e:F:hi:Imno:p:P:stT:wx:X:"; #endif /* 1 */ static struct long_options l_opts[] = { { "align", require_arg, 'a' }, @@ -209,6 +209,14 @@ static struct long_options l_opts[] = { { "min-xfe", require_arg, 'x' }, { "min-xf", require_arg, 'x' }, { "min-x", require_arg, 'x' }, + { "mpi-posix", no_arg, 'm' }, + { "mpi-posi", no_arg, 'm' }, + { "mpi-pos", no_arg, 'm' }, + { "mpi-po", no_arg, 'm' }, + { "mpi-p", no_arg, 'm' }, + { "mpi-", no_arg, 'm' }, + { "mpi", no_arg, 'm' }, + { "mp", no_arg, 'm' }, { "no-fill", no_arg, 'n' }, { "no-fil", no_arg, 'n' }, { "no-fi", no_arg, 'n' }, @@ -285,6 +293,7 @@ struct options { int h5_use_chunks; /* Make HDF5 dataset chunked */ int h5_no_fill; /* Disable HDF5 writing fill values */ int h5_write_only; /* Perform the write tests only */ + unsigned h5_use_mpi_posix; /* Use MPI-posix VFD for HDF5 I/O (instead of MPI-I/O VFD) */ int verify; /* Verify data correctness */ }; @@ -426,6 +435,7 @@ run_test_loop(struct options *opts) parms.h5_use_chunks = opts->h5_use_chunks; parms.h5_no_fill = opts->h5_no_fill; parms.h5_write_only = opts->h5_write_only; + parms.h5_use_mpi_posix = opts->h5_use_mpi_posix; parms.verify = opts->verify; /* start with max_num_procs and decrement it by half for each loop. */ @@ -524,7 +534,10 @@ run_test(iotype iot, parameters parms, struct options *opts) output_report("MPIO\n"); break; case PHDF5: - output_report("PHDF5\n"); + if(parms.h5_use_mpi_posix) + output_report("PHDF5 (w/MPI-posix driver)\n"); + else + output_report("PHDF5 (w/MPI-I/O driver)\n"); break; } @@ -1044,6 +1057,18 @@ report_parameters(struct options *opts) else HDfprintf(output, "Independent\n"); + HDfprintf(output, "rank %d: VFL used for HDF5 I/O=", rank); + if(opts->h5_use_mpi_posix) + HDfprintf(output, "MPI-posix driver\n"); + else + HDfprintf(output, "MPI-I/O driver\n"); + + HDfprintf(output, "rank %d: Data storage method in HDF5=", rank); + if(opts->h5_use_chunks) + HDfprintf(output, "Chunked\n"); + else + HDfprintf(output, "Contiguous\n"); + { char *prefix = getenv("HDF5_PARAPREFIX"); @@ -1094,6 +1119,7 @@ parse_command_line(int argc, char *argv[]) cl_opts->h5_use_chunks = FALSE; /* Don't chunk the HDF5 dataset by default */ cl_opts->h5_no_fill = FALSE; /* Write fill values by default */ cl_opts->h5_write_only = FALSE; /* Do both read and write by default */ + cl_opts->h5_use_mpi_posix = FALSE; /* Don't use MPI-posix VFD for HDF5 I/O by default */ cl_opts->verify = FALSE; /* No Verify data correctness by default */ while ((opt = get_option(argc, (const char **)argv, s_opts, l_opts)) != EOF) { @@ -1223,6 +1249,10 @@ parse_command_line(int argc, char *argv[]) case 'I': cl_opts->interleaved = 1; break; + case 'm': + /* Turn on MPI-posix VFL driver for HDF5 I/O */ + cl_opts->h5_use_mpi_posix = TRUE; + break; case 'n': /* Turn off writing fill values */ #ifdef H5_HAVE_NOFILL cl_opts->h5_no_fill = TRUE; @@ -1357,6 +1387,8 @@ usage(const char *prog) printf(" -i, --num-iterations Number of iterations to perform [default: 1]\n"); printf(" -I, --interleaved Interleaved block I/O (see below for example)\n"); printf(" [default: Contiguous block I/O]\n"); + printf(" -m, --mpi-posix Use MPI-posix driver for HDF5 I/O\n"); + printf(" [default: use MPI-I/O driver]\n"); printf(" -n, --no-fill Don't write fill values to HDF5 dataset\n"); printf(" (Supported in HDF5 library v1.5 only)\n"); printf(" [default: off (i.e. write fill values)]\n"); |