summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlbert Cheng <acheng@hdfgroup.org>2001-08-16 05:27:33 (GMT)
committerAlbert Cheng <acheng@hdfgroup.org>2001-08-16 05:27:33 (GMT)
commit34b8cca115221015d5fae865f89c53603302d025 (patch)
treef6bb6acf66c4c78ada767ea6cc71936e8eff192e
parent37de169a62c5a47b907e23bd4f07168db50d254e (diff)
downloadhdf5-34b8cca115221015d5fae865f89c53603302d025.zip
hdf5-34b8cca115221015d5fae865f89c53603302d025.tar.gz
hdf5-34b8cca115221015d5fae865f89c53603302d025.tar.bz2
[svn-r4364] Purpose:
cleanup Description: chunk, iopipe, overhead have been moved to perform/. Platforms tested: eirene(parallel).
-rw-r--r--test/Dependencies107
-rw-r--r--test/Makefile.in21
-rw-r--r--test/chunk.c521
-rw-r--r--test/iopipe.c546
-rw-r--r--test/overhead.c403
5 files changed, 6 insertions, 1592 deletions
diff --git a/test/Dependencies b/test/Dependencies
index 92b6ad8..2048e82 100644
--- a/test/Dependencies
+++ b/test/Dependencies
@@ -151,41 +151,6 @@ bittests.lo: \
$(top_srcdir)/src/H5Rprivate.h \
$(top_srcdir)/src/H5Zprivate.h \
$(top_srcdir)/src/H5Sprivate.h
-chunk.lo: \
- $(srcdir)/chunk.c \
- $(top_srcdir)/src/hdf5.h \
- $(top_srcdir)/src/H5public.h \
- $(top_builddir)/src/H5pubconf.h \
- $(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
- $(top_srcdir)/src/H5Apublic.h \
- $(top_srcdir)/src/H5ACpublic.h \
- $(top_srcdir)/src/H5Bpublic.h \
- $(top_srcdir)/src/H5Dpublic.h \
- $(top_srcdir)/src/H5Epublic.h \
- $(top_srcdir)/src/H5Fpublic.h \
- $(top_srcdir)/src/H5FDpublic.h \
- $(top_srcdir)/src/H5Gpublic.h \
- $(top_srcdir)/src/H5HGpublic.h \
- $(top_srcdir)/src/H5HLpublic.h \
- $(top_srcdir)/src/H5MMpublic.h \
- $(top_srcdir)/src/H5Opublic.h \
- $(top_srcdir)/src/H5Ppublic.h \
- $(top_srcdir)/src/H5Zpublic.h \
- $(top_srcdir)/src/H5Rpublic.h \
- $(top_srcdir)/src/H5Spublic.h \
- $(top_srcdir)/src/H5Tpublic.h \
- $(top_srcdir)/src/H5FDcore.h \
- $(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDmpio.h \
- $(top_srcdir)/src/H5FDsec2.h \
- $(top_srcdir)/src/H5FDstdio.h \
- $(top_srcdir)/src/H5FDsrb.h \
- $(top_srcdir)/src/H5FDgass.h \
- $(top_srcdir)/src/H5FDdpss.h \
- $(top_srcdir)/src/H5FDstream.h \
- $(top_srcdir)/src/H5FDmulti.h \
- $(top_srcdir)/src/H5FDlog.h
cmpd_dset.lo: \
$(srcdir)/cmpd_dset.c \
$(srcdir)/h5test.h \
@@ -649,43 +614,6 @@ hyperslab.lo: \
$(top_srcdir)/src/H5MMprivate.h \
$(top_srcdir)/src/H5MMpublic.h \
$(top_srcdir)/src/H5Vprivate.h
-iopipe.lo: \
- $(srcdir)/iopipe.c \
- $(top_srcdir)/src/hdf5.h \
- $(top_srcdir)/src/H5public.h \
- $(top_builddir)/src/H5pubconf.h \
- $(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
- $(top_srcdir)/src/H5Apublic.h \
- $(top_srcdir)/src/H5ACpublic.h \
- $(top_srcdir)/src/H5Bpublic.h \
- $(top_srcdir)/src/H5Dpublic.h \
- $(top_srcdir)/src/H5Epublic.h \
- $(top_srcdir)/src/H5Fpublic.h \
- $(top_srcdir)/src/H5FDpublic.h \
- $(top_srcdir)/src/H5Gpublic.h \
- $(top_srcdir)/src/H5HGpublic.h \
- $(top_srcdir)/src/H5HLpublic.h \
- $(top_srcdir)/src/H5MMpublic.h \
- $(top_srcdir)/src/H5Opublic.h \
- $(top_srcdir)/src/H5Ppublic.h \
- $(top_srcdir)/src/H5Zpublic.h \
- $(top_srcdir)/src/H5Rpublic.h \
- $(top_srcdir)/src/H5Spublic.h \
- $(top_srcdir)/src/H5Tpublic.h \
- $(top_srcdir)/src/H5FDcore.h \
- $(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDmpio.h \
- $(top_srcdir)/src/H5FDsec2.h \
- $(top_srcdir)/src/H5FDstdio.h \
- $(top_srcdir)/src/H5FDsrb.h \
- $(top_srcdir)/src/H5FDgass.h \
- $(top_srcdir)/src/H5FDdpss.h \
- $(top_srcdir)/src/H5FDstream.h \
- $(top_srcdir)/src/H5FDmulti.h \
- $(top_srcdir)/src/H5FDlog.h \
- $(top_srcdir)/src/H5private.h \
- $(top_builddir)/src/H5config.h
istore.lo: \
$(srcdir)/istore.c \
$(srcdir)/h5test.h \
@@ -995,41 +923,6 @@ ohdr.lo: \
$(top_srcdir)/src/H5Sprivate.h \
$(top_srcdir)/src/H5Iprivate.h \
$(top_srcdir)/src/H5Gpkg.h
-overhead.lo: \
- $(srcdir)/overhead.c \
- $(top_srcdir)/src/hdf5.h \
- $(top_srcdir)/src/H5public.h \
- $(top_builddir)/src/H5pubconf.h \
- $(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
- $(top_srcdir)/src/H5Apublic.h \
- $(top_srcdir)/src/H5ACpublic.h \
- $(top_srcdir)/src/H5Bpublic.h \
- $(top_srcdir)/src/H5Dpublic.h \
- $(top_srcdir)/src/H5Epublic.h \
- $(top_srcdir)/src/H5Fpublic.h \
- $(top_srcdir)/src/H5FDpublic.h \
- $(top_srcdir)/src/H5Gpublic.h \
- $(top_srcdir)/src/H5HGpublic.h \
- $(top_srcdir)/src/H5HLpublic.h \
- $(top_srcdir)/src/H5MMpublic.h \
- $(top_srcdir)/src/H5Opublic.h \
- $(top_srcdir)/src/H5Ppublic.h \
- $(top_srcdir)/src/H5Zpublic.h \
- $(top_srcdir)/src/H5Rpublic.h \
- $(top_srcdir)/src/H5Spublic.h \
- $(top_srcdir)/src/H5Tpublic.h \
- $(top_srcdir)/src/H5FDcore.h \
- $(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDmpio.h \
- $(top_srcdir)/src/H5FDsec2.h \
- $(top_srcdir)/src/H5FDstdio.h \
- $(top_srcdir)/src/H5FDsrb.h \
- $(top_srcdir)/src/H5FDgass.h \
- $(top_srcdir)/src/H5FDdpss.h \
- $(top_srcdir)/src/H5FDstream.h \
- $(top_srcdir)/src/H5FDmulti.h \
- $(top_srcdir)/src/H5FDlog.h
stab.lo: \
$(srcdir)/stab.c \
$(srcdir)/h5test.h \
diff --git a/test/Makefile.in b/test/Makefile.in
index 77cd888..d07d708 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -22,7 +22,7 @@ TEST_PROGS=testhdf5 lheap ohdr stab gheap hyperslab istore bittests dtypes \
flush1 flush2 enum gass_write gass_read gass_append dpss_write \
dpss_read srb_write srb_append srb_read ttsafe stream_test
-TIMINGS=iopipe chunk overhead testmeta
+TIMINGS=testmeta
## The libh5test.a library provides common support code for the tests. We link
## this library statically because some systems can only link executables to
@@ -42,10 +42,10 @@ MOSTLYCLEAN=cmpd_dset.h5 dataset.h5 extend.h5 istore.h5 tfile1.h5 tfile2.h5 \
tfile3.h5 th5s1.h5 lheap.h5 ohdr.h5 stab1.h5 stab2.h5 \
extern_1.h5 extern_2.h5 extern_3.h5 extern_1a.raw extern_1b.raw \
extern_2a.raw extern_2b.raw extern_3a.raw extern_3b.raw \
- extern_4a.raw extern_4b.raw iopipe.raw iopipe.h5 gheap0.h5 \
- gheap1.h5 gheap2.h5 gheap3.h5 gheap4.h5 links.h5 chunk.h5 \
+ extern_4a.raw extern_4b.raw gheap0.h5 \
+ gheap1.h5 gheap2.h5 gheap3.h5 gheap4.h5 links.h5 \
big.data big[0-9][0-9][0-9][0-9][0-9].h5 dtypes1.h5 dtypes2.h5 \
- tattr.h5 tselect.h5 mtime.h5 unlink.h5 overhead.h5 \
+ tattr.h5 tselect.h5 mtime.h5 unlink.h5 \
fillval_[0-9].h5 fillval.raw mount_[0-9].h5 testmeta.h5 \
ttime.h5 trefer[12].h5 tvltypes.h5 tvlstr.h5 flush.h5 enum1.h5 \
titerate.h5 ttsafe.h5 tarray1.h5 tgenprop.h5
@@ -56,9 +56,9 @@ CLEAN=$(TIMINGS)
## other source lists are for the individual tests, the files of which may
## overlap with other tests.
-TEST_SRC=big.c bittests.c chunk.c cmpd_dset.c dsets.c dtypes.c extend.c \
+TEST_SRC=big.c bittests.c cmpd_dset.c dsets.c dtypes.c extend.c \
external.c fillval.c flush1.c flush2.c gheap.c h5test.c hyperslab.c \
- iopipe.c istore.c lheap.c links.c mount.c mtime.c ohdr.c overhead.c \
+ istore.c lheap.c links.c mount.c mtime.c ohdr.c \
stab.c tarray.c tattr.c testhdf5.c testmeta.c tfile.c tgenprop.c th5s.c \
titerate.c tmeta.c trefer.c tselect.c ttime.c ttbbt.c tvltypes.c tvlstr.c \
unlink.c enum.c ttsafe.c ttsafe_dcreate.c ttsafe_error.c ttsafe_cancel.c \
@@ -129,27 +129,18 @@ extend: extend.lo
external: external.lo
@$(LT_LINK_EXE) $(CFLAGS) -o $@ external.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
-iopipe: iopipe.lo
- @$(LT_LINK_EXE) $(CFLAGS) -o $@ iopipe.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
-
big: big.lo
@$(LT_LINK_EXE) $(CFLAGS) -o $@ big.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
links: links.lo
@$(LT_LINK_EXE) $(CFLAGS) -o $@ links.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
-chunk: chunk.lo
- @$(LT_LINK_EXE) $(CFLAGS) -o $@ chunk.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
-
mtime: mtime.lo
@$(LT_LINK_EXE) $(CFLAGS) -o $@ mtime.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
unlink: unlink.lo
@$(LT_LINK_EXE) $(CFLAGS) -o $@ unlink.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
-overhead: overhead.lo
- @$(LT_LINK_EXE) $(CFLAGS) -o $@ overhead.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
-
fillval: fillval.lo
@$(LT_LINK_EXE) $(CFLAGS) -o $@ fillval.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
diff --git a/test/chunk.c b/test/chunk.c
deleted file mode 100644
index 47cd4db..0000000
--- a/test/chunk.c
+++ /dev/null
@@ -1,521 +0,0 @@
-/*
- * Copyright (C) 1998 NCSA
- * All rights reserved.
- *
- * Programmer: Robb Matzke <robb@arborea.spizella.com>
- * Thursday, May 14, 1998
- *
- * Purpose: Checks the effect of various I/O request sizes and raw data
- * cache sizes. Performance depends on the amount of data read
- * from disk and we use a filter to get that number.
- */
-
-/* See H5private.h for how to include headers */
-#undef NDEBUG
-#include "hdf5.h"
-
-#ifdef H5_STDC_HEADERS
-# include <assert.h>
-# include <stdio.h>
-# include <stdlib.h>
-# include <string.h>
-#endif
-
-
-#ifndef H5_HAVE_ATTRIBUTE
-# undef __attribute__
-# define __attribute__(X) /*void*/
-# define UNUSED /*void*/
-#else
-# define UNUSED __attribute__((unused))
-#endif
-
-#define FILE_NAME "chunk.h5"
-#define LINESPOINTS "lines"
-#define CH_SIZE 100 /*squared in terms of bytes */
-#define DS_SIZE 20 /*squared in terms of chunks */
-#define FILTER_COUNTER 305
-#define READ 0
-#define WRITE 1
-#define MIN(X,Y) ((X)<(Y)?(X):(Y))
-#define MAX(X,Y) ((X)>(Y)?(X):(Y))
-#define SQUARE(X) ((X)*(X))
-
-/* The row-major test */
-#define RM_CACHE_STRT 25
-#define RM_CACHE_END 25
-#define RM_CACHE_DELT 5
-#define RM_START 0.50
-#define RM_END 5.00
-#define RM_DELTA 0.50
-#define RM_W0 0.0
-#define RM_NRDCC 521
-
-/* Diagonal test */
-#define DIAG_CACHE_STRT 25
-#define DIAG_CACHE_END 25
-#define DIAG_CACHE_DELT 5
-#define DIAG_START 0.50
-#define DIAG_END 5.00
-#define DIAG_DELTA 0.50
-/* #define DIAG_W0 0.65 */
-/* #define DIAG_NRDCC 521 */
-
-static size_t nio_g;
-static hid_t fapl_g = -1;
-
-
-/*-------------------------------------------------------------------------
- * Function: counter
- *
- * Purpose: Count number of bytes but don't do anything.
- *
- * Return: Success: src_nbytes-1
- *
- * Failure: never fails
- *
- * Programmer: Robb Matzke
- * Thursday, May 14, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static size_t
-counter (unsigned UNUSED flags, size_t UNUSED cd_nelmts,
- const unsigned UNUSED *cd_values, size_t nbytes,
- size_t UNUSED *buf_size, void UNUSED **buf)
-{
- nio_g += nbytes;
- return nbytes;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: create_dataset
- *
- * Purpose: Creates a square dataset with square chunks, registers a
- * stupid compress/uncompress pair for counting I/O, and
- * initializes the dataset. The chunk size is in bytes, the
- * dataset size is in terms of chunks.
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * Thursday, May 14, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-create_dataset (void)
-{
- hid_t file, space, dcpl, dset;
- hsize_t size[2];
- signed char *buf;
-
- /* The file */
- file = H5Fcreate (FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_g);
-
- /* The data space */
- size[0] = size[1] = DS_SIZE * CH_SIZE;
- space = H5Screate_simple (2, size, size);
-
- /* The storage layout and compression */
- dcpl = H5Pcreate (H5P_DATASET_CREATE);
- size[0] = size[1] = CH_SIZE;
- H5Pset_chunk (dcpl, 2, size);
- H5Zregister (FILTER_COUNTER, "counter", counter);
- H5Pset_filter (dcpl, FILTER_COUNTER, 0, 0, NULL);
-
- /* The dataset */
- dset = H5Dcreate (file, "dset", H5T_NATIVE_SCHAR, space, dcpl);
- assert (dset>=0);
-
- /* The data */
- buf = calloc (1, SQUARE (DS_SIZE*CH_SIZE));
- H5Dwrite (dset, H5T_NATIVE_SCHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
- free (buf);
-
- /* Close */
- H5Dclose (dset);
- H5Sclose (space);
- H5Pclose (dcpl);
- H5Fclose (file);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: test_rowmaj
- *
- * Purpose: Reads the entire dataset using the specified size-squared
- * I/O requests in row major order.
- *
- * Return: Efficiency: data requested divided by data actually read.
- *
- * Programmer: Robb Matzke
- * Thursday, May 14, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static double
-test_rowmaj (int op, hsize_t cache_size, hsize_t io_size)
-{
- hid_t file, dset, mem_space, file_space;
- signed char *buf = calloc (1, SQUARE(io_size));
- hsize_t i, j, hs_size[2];
- hssize_t hs_offset[2];
- int mdc_nelmts, rdcc_nelmts;
- double w0;
-
- H5Pget_cache (fapl_g, &mdc_nelmts, &rdcc_nelmts, NULL, &w0);
-#ifdef RM_W0
- w0 = RM_W0;
-#endif
-#ifdef RM_NRDCC
- rdcc_nelmts = RM_NRDCC;
-#endif
- H5Pset_cache (fapl_g, mdc_nelmts, rdcc_nelmts,
- cache_size*SQUARE (CH_SIZE), w0);
- file = H5Fopen (FILE_NAME, H5F_ACC_RDWR, fapl_g);
- dset = H5Dopen (file, "dset");
- file_space = H5Dget_space (dset);
- nio_g = 0;
-
- for (i=0; i<CH_SIZE*DS_SIZE; i+=io_size) {
-#if 0
- fprintf (stderr, "%5d\b\b\b\b\b", (int)i);
- fflush (stderr);
-#endif
- for (j=0; j<CH_SIZE*DS_SIZE; j+=io_size) {
- hs_offset[0] = i;
- hs_size[0] = MIN (io_size, CH_SIZE*DS_SIZE-i);
- hs_offset[1] = j;
- hs_size[1] = MIN (io_size, CH_SIZE*DS_SIZE-j);
- mem_space = H5Screate_simple (2, hs_size, hs_size);
- H5Sselect_hyperslab (file_space, H5S_SELECT_SET, hs_offset,
- NULL, hs_size, NULL);
-
- if (READ==op) {
- H5Dread (dset, H5T_NATIVE_SCHAR, mem_space, file_space,
- H5P_DEFAULT, buf);
- } else {
- H5Dwrite (dset, H5T_NATIVE_SCHAR, mem_space, file_space,
- H5P_DEFAULT, buf);
- }
- H5Sclose (mem_space);
- }
- }
-
- free (buf);
- H5Sclose (file_space);
- H5Dclose (dset);
- H5Fclose (file);
-
- return (double)SQUARE(CH_SIZE*DS_SIZE)/(double)nio_g;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: test_diag
- *
- * Purpose: Reads windows diagonally across the dataset. Each window is
- * offset from the previous window by OFFSET in the x and y
- * directions. The reading ends after the (k,k) value is read
- * where k is the maximum index in the dataset.
- *
- * Return: Efficiency.
- *
- * Programmer: Robb Matzke
- * Friday, May 15, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static double
-test_diag (int op, hsize_t cache_size, hsize_t io_size, hsize_t offset)
-{
- hid_t file, dset, mem_space, file_space;
- hsize_t i, hs_size[2];
- hsize_t nio = 0;
- hssize_t hs_offset[2];
- signed char *buf = calloc (1, SQUARE (io_size));
- int mdc_nelmts, rdcc_nelmts;
- double w0;
-
- H5Pget_cache (fapl_g, &mdc_nelmts, &rdcc_nelmts, NULL, &w0);
-#ifdef DIAG_W0
- w0 = DIAG_W0;
-#endif
-#ifdef DIAG_NRDCC
- rdcc_nelmts = DIAG_NRDCC;
-#endif
- H5Pset_cache (fapl_g, mdc_nelmts, rdcc_nelmts,
- cache_size*SQUARE (CH_SIZE), w0);
- file = H5Fopen (FILE_NAME, H5F_ACC_RDWR, fapl_g);
- dset = H5Dopen (file, "dset");
- file_space = H5Dget_space (dset);
- nio_g = 0;
-
- for (i=0, hs_size[0]=io_size; hs_size[0]==io_size; i+=offset) {
- hs_offset[0] = hs_offset[1] = i;
- hs_size[0] = hs_size[1] = MIN (io_size, CH_SIZE*DS_SIZE-i);
- mem_space = H5Screate_simple (2, hs_size, hs_size);
- H5Sselect_hyperslab (file_space, H5S_SELECT_SET, hs_offset, NULL,
- hs_size, NULL);
- if (READ==op) {
- H5Dread (dset, H5T_NATIVE_SCHAR, mem_space, file_space,
- H5P_DEFAULT, buf);
- } else {
- H5Dwrite (dset, H5T_NATIVE_SCHAR, mem_space, file_space,
- H5P_DEFAULT, buf);
- }
- H5Sclose (mem_space);
- nio += hs_size[0]*hs_size[1];
- if (i>0) nio -= SQUARE (io_size-offset);
- }
-
- free (buf);
- H5Sclose (file_space);
- H5Dclose (dset);
- H5Fclose (file);
-
- /*
- * The extra cast in the following statement is a bug workaround for the
- * Win32 version 5.0 compiler.
- * 1998-11-06 ptl
- */
- return (double)(hssize_t)nio/(hssize_t)nio_g;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: main
- *
- * Purpose: See file prologue.
- *
- * Return: Success:
- *
- * Failure:
- *
- * Programmer: Robb Matzke
- * Thursday, May 14, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-int
-main (void)
-{
- hsize_t io_size;
- double effic, io_percent;
- FILE *f, *d;
- int cache_size;
- double w0;
-
- /*
- * Create a global file access property list.
- */
- fapl_g = H5Pcreate (H5P_FILE_ACCESS);
- H5Pget_cache (fapl_g, NULL, NULL, NULL, &w0);
-
- /* Create the file */
- create_dataset ();
- f = fopen ("x-gnuplot", "w");
-
- printf("Test %8s %8s %8s\n", "CacheSz", "ChunkSz", "Effic");
- printf("--------- -------- -------- --------\n");
-
-#if 1
- /*
- * Test row-major reading of the dataset with various sizes of request
- * windows.
- */
- if (RM_CACHE_STRT==RM_CACHE_END) {
- fprintf (f, "set yrange [0:1.2]\n");
- fprintf (f, "set ytics 0, 0.1, 1\n");
- fprintf (f, "set xlabel \"%s\"\n",
- "Request size as a fraction of chunk size");
- fprintf (f, "set ylabel \"Efficiency\"\n");
- fprintf (f, "set title \"Cache %d chunks, w0=%g, "
- "Size=(total=%d, chunk=%d)\"\n",
- RM_CACHE_STRT, w0, DS_SIZE*CH_SIZE, CH_SIZE);
- } else {
- fprintf (f, "set autoscale\n");
- fprintf (f, "set hidden3d\n");
- }
-
- fprintf (f, "set terminal postscript\nset output \"x-rowmaj-rd.ps\"\n");
- fprintf (f, "%s \"x-rowmaj-rd.dat\" title \"RowMaj-Read\" with %s\n",
- RM_CACHE_STRT==RM_CACHE_END?"plot":"splot",
- LINESPOINTS);
- fprintf (f, "set terminal x11\nreplot\n");
- d = fopen ("x-rowmaj-rd.dat", "w");
- for (cache_size=RM_CACHE_STRT;
- cache_size<=RM_CACHE_END;
- cache_size+=RM_CACHE_DELT) {
- for (io_percent=RM_START; io_percent<=RM_END; io_percent+=RM_DELTA) {
- io_size = MAX (1, (int)(CH_SIZE*io_percent));
- printf ("Rowmaj-rd %8d %8.2f", cache_size, io_percent);
- fflush (stdout);
- effic = test_rowmaj (READ, cache_size, io_size);
- printf (" %8.2f\n", effic);
- if (RM_CACHE_STRT==RM_CACHE_END) {
- fprintf (d, "%g %g\n", io_percent, effic);
- } else {
- fprintf (d, "%g\n", effic);
- }
- }
- fprintf (d, "\n");
- }
- fclose (d);
- fprintf (f, "pause -1\n");
-#endif
-
-#if 1
- /*
- * Test row-major writing of the dataset with various sizes of request
- * windows.
- */
- if (RM_CACHE_STRT==RM_CACHE_END) {
- fprintf (f, "set yrange [0:1.2]\n");
- fprintf (f, "set ytics 0, 0.1, 1\n");
- fprintf (f, "set xlabel \"%s\"\n",
- "Request size as a fraction of chunk size");
- fprintf (f, "set ylabel \"Efficiency\"\n");
- fprintf (f, "set title \"Cache %d chunks,w0=%g, "
- "Size=(total=%d, chunk=%d)\"\n",
- RM_CACHE_STRT, w0, DS_SIZE*CH_SIZE, CH_SIZE);
- } else {
- fprintf (f, "set autoscale\n");
- fprintf (f, "set hidden3d\n");
- }
-
- fprintf (f, "set terminal postscript\nset output \"x-rowmaj-wr.ps\"\n");
- fprintf (f, "%s \"x-rowmaj-wr.dat\" title \"RowMaj-Write\" with %s\n",
- RM_CACHE_STRT==RM_CACHE_END?"plot":"splot",
- LINESPOINTS);
- fprintf (f, "set terminal x11\nreplot\n");
- d = fopen ("x-rowmaj-wr.dat", "w");
- for (cache_size=RM_CACHE_STRT;
- cache_size<=RM_CACHE_END;
- cache_size+=RM_CACHE_DELT) {
- for (io_percent=RM_START; io_percent<=RM_END; io_percent+=RM_DELTA) {
- io_size = MAX (1, (int)(CH_SIZE*io_percent));
- printf ("Rowmaj-wr %8d %8.2f", cache_size, io_percent);
- fflush (stdout);
- effic = test_rowmaj (WRITE, cache_size, io_size);
- printf (" %8.2f\n", effic);
- if (RM_CACHE_STRT==RM_CACHE_END) {
- fprintf (d, "%g %g\n", io_percent, effic);
- } else {
- fprintf (d, "%g\n", effic);
- }
- }
- fprintf (d, "\n");
- }
- fclose (d);
- fprintf (f, "pause -1\n");
-#endif
-
-#if 1
- /*
- * Test diagonal read
- */
- if (DIAG_CACHE_STRT==DIAG_CACHE_END) {
- fprintf (f, "set yrange [0:1.2]\n");
- fprintf (f, "set ytics 0, 0.1, 1\n");
- fprintf (f, "set xlabel \"%s\"\n",
- "Request size as a fraction of chunk size");
- fprintf (f, "set ylabel \"Efficiency\"\n");
- fprintf (f, "set title \"Cache %d chunks,w0=%g, "
- "Size=(total=%d, chunk=%d)\"\n",
- DIAG_CACHE_STRT, w0, DS_SIZE*CH_SIZE, CH_SIZE);
- } else {
- fprintf (f, "set autoscale\n");
- fprintf (f, "set hidden3d\n");
- }
- fprintf (f, "set terminal postscript\nset output \"x-diag-rd.ps\"\n");
- fprintf (f, "%s \"x-diag-rd.dat\" title \"Diag-Read\" with %s\n",
- DIAG_CACHE_STRT==DIAG_CACHE_END?"plot":"splot", LINESPOINTS);
- fprintf (f, "set terminal x11\nreplot\n");
- d = fopen ("x-diag-rd.dat", "w");
- for (cache_size=DIAG_CACHE_STRT;
- cache_size<=DIAG_CACHE_END;
- cache_size+=DIAG_CACHE_DELT) {
- for (io_percent=DIAG_START;
- io_percent<=DIAG_END;
- io_percent+=DIAG_DELTA) {
- io_size = MAX (1, (int)(CH_SIZE*io_percent));
- printf ("Diag-rd %8d %8.2f", cache_size, io_percent);
- fflush (stdout);
- effic = test_diag (READ, cache_size, io_size, MAX (1, io_size/2));
- printf (" %8.2f\n", effic);
- if (DIAG_CACHE_STRT==DIAG_CACHE_END) {
- fprintf (d, "%g %g\n", io_percent, effic);
- } else {
- fprintf (d, "%g\n", effic);
- }
- }
- fprintf (d, "\n");
- }
- fclose (d);
- fprintf (f, "pause -1\n");
-#endif
-
-#if 1
- /*
- * Test diagonal write
- */
- if (DIAG_CACHE_STRT==DIAG_CACHE_END) {
- fprintf (f, "set yrange [0:1.2]\n");
- fprintf (f, "set ytics 0, 0.1, 1\n");
- fprintf (f, "set xlabel \"%s\"\n",
- "Request size as a fraction of chunk size");
- fprintf (f, "set ylabel \"Efficiency\"\n");
- fprintf (f, "set title \"Cache %d chunks, w0=%g, "
- "Size=(total=%d, chunk=%d)\"\n",
- DIAG_CACHE_STRT, w0, DS_SIZE*CH_SIZE, CH_SIZE);
- } else {
- fprintf (f, "set autoscale\n");
- fprintf (f, "set hidden3d\n");
- }
- fprintf (f, "set terminal postscript\nset output \"x-diag-wr.ps\"\n");
- fprintf (f, "%s \"x-diag-wr.dat\" title \"Diag-Write\" with %s\n",
- DIAG_CACHE_STRT==DIAG_CACHE_END?"plot":"splot", LINESPOINTS);
- fprintf (f, "set terminal x11\nreplot\n");
- d = fopen ("x-diag-wr.dat", "w");
- for (cache_size=DIAG_CACHE_STRT;
- cache_size<=DIAG_CACHE_END;
- cache_size+=DIAG_CACHE_DELT) {
- for (io_percent=DIAG_START;
- io_percent<=DIAG_END;
- io_percent+=DIAG_DELTA) {
- io_size = MAX (1, (int)(CH_SIZE*io_percent));
- printf ("Diag-wr %8d %8.2f", cache_size, io_percent);
- fflush (stdout);
- effic = test_diag (WRITE, cache_size, io_size, MAX (1, io_size/2));
- printf (" %8.2f\n", effic);
- if (DIAG_CACHE_STRT==DIAG_CACHE_END) {
- fprintf (d, "%g %g\n", io_percent, effic);
- } else {
- fprintf (d, "%g\n", effic);
- }
- }
- fprintf (d, "\n");
- }
- fclose (d);
- fprintf (f, "pause -1\n");
-#endif
-
-
- H5Pclose (fapl_g);
- fclose (f);
- return 0;
-}
-
diff --git a/test/iopipe.c b/test/iopipe.c
deleted file mode 100644
index aa76369..0000000
--- a/test/iopipe.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/*
- * Copyright (C) 1998 NCSA
- * All rights reserved.
- *
- * Programmer: Robb Matzke <matzke@llnl.gov>
- * Thursday, March 12, 1998
- */
-
-/* See H5private.h for how to include headers */
-#undef NDEBUG
-#include "hdf5.h"
-
-#ifdef H5_HAVE_WINSOCK_H
-#include <Winsock.h>
-#endif
-
-/*Winsock.h includes windows.h, due to the different value of
-WINVER, windows.h should be put before H5private.h. Kent yang 6/21/2001*/
-
-#include "H5private.h"
-
-#ifdef H5_STDC_HEADERS
-# include <assert.h>
-# include <fcntl.h>
-# include <stdio.h>
-# include <string.h>
-# include <stdlib.h>
-#endif
-
-#ifdef H5_HAVE_UNISTD_H
-# include <sys/types.h>
-# include <unistd.h>
-#endif
-
-#if defined(H5_TIME_WITH_SYS_TIME)
-# include <sys/time.h>
-# include <time.h>
-#elif defined(H5_HAVE_SYS_TIME_H)
-# include <sys/time.h>
-#else
-# include <time.h>
-#endif
-
-#ifdef H5_HAVE_SYS_RESOURCE_H
-# include <sys/resource.h>
-#endif
-
-
-
-#if defined (__MWERKS__)
-#ifdef H5_HAVE_SYS_TIMEB
-#undef H5_HAVE_SYS_TIMEB
-#endif
-#ifdef H5_HAVE_SYSTEM
-#undef H5_HAVE_SYSTEM
-#endif
-#endif /* __MWERKS__*/
-
-
-#ifdef H5_HAVE_SYS_TIMEB
-#include <sys/timeb.h>
-#endif
-
-
-#define RAW_FILE_NAME "iopipe.raw"
-#define HDF5_FILE_NAME "iopipe.h5"
-#define HEADING "%-16s"
-#define PROGRESS '='
-
-#if 0
-/* Normal testing */
-#define REQUEST_SIZE_X 4579
-#define REQUEST_SIZE_Y 4579
-#define NREAD_REQUESTS 45
-#define NWRITE_REQUESTS 45
-#else
-/* Speedy testing */
-#define REQUEST_SIZE_X 1000
-#define REQUEST_SIZE_Y 1000
-#define NREAD_REQUESTS 45
-#define NWRITE_REQUESTS 45
-#endif
-
-
-/*-------------------------------------------------------------------------
- * Function: print_stats
- *
- * Purpose: Prints statistics
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * Thursday, March 12, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-#ifdef H5_HAVE_GETRUSAGE
-static void
-print_stats (const char *prefix,
- struct rusage *r_start, struct rusage *r_stop,
- struct timeval *t_start, struct timeval *t_stop,
- size_t nbytes)
-#else /* H5_HAVE_GETRUSAGE */
-static void
-print_stats (const char *prefix,
- struct timeval *r_start, struct timeval *r_stop,
- struct timeval *t_start, struct timeval *t_stop,
- size_t nbytes)
-#endif /* H5_HAVE_GETRUSAGE */
-{
- double e_time, bw;
-#ifdef H5_HAVE_GETRUSAGE
- double u_time, s_time;
-
- u_time = ((double)(r_stop->ru_utime.tv_sec)+
- (double)(r_stop->ru_utime.tv_usec)/1000000.0) -
- ((double)(r_start->ru_utime.tv_sec)+
- (double)(r_start->ru_utime.tv_usec)/1000000.0);
-
- s_time = ((double)(r_stop->ru_stime.tv_sec)+
- (double)(r_stop->ru_stime.tv_usec)/1000000.0) -
- ((double)(r_start->ru_stime.tv_sec)+
- (double)(r_start->ru_stime.tv_usec)/1000000.0);
-#endif
-#ifndef H5_HAVE_SYS_TIMEB
- e_time = ((double)(t_stop->tv_sec)+
- (double)(t_stop->tv_usec)/1000000.0) -
- ((double)(t_start->tv_sec)+
- (double)(t_start->tv_usec)/1000000.0);
-#else
- e_time = ((double)(t_stop->tv_sec)+
- (double)(t_stop->tv_usec)/1000.0) -
- ((double)(t_start->tv_sec)+
- (double)(t_start->tv_usec)/1000.0);
-#endif
- bw = (double)nbytes / e_time;
-
-#ifdef H5_HAVE_GETRUSAGE
- printf (HEADING "%1.2fuser %1.2fsystem %1.2felapsed %1.2fMB/s\n",
- prefix, u_time, s_time, e_time, bw/(1024*1024));
-#else
- printf (HEADING "%1.2felapsed %1.2fMB/s\n",
- prefix, e_time, bw/(1024*1024));
-#endif
-
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: synchronize
- *
- * Purpose:
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * Thursday, March 12, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-synchronize (void)
-{
-#ifdef H5_HAVE_SYSTEM
-#ifdef WIN32
-#ifdef __WATCOMC__
- flushall();
-#else /* __WATCOMC__ */
- _flushall();
-#endif /* __WATCOMC__ */
-#else
- system ("sync");
- system ("df >/dev/null");
-#endif
-#if 0
- /*
- * This works well on Linux to get rid of all cached disk buffers. The
- * number should be approximately the amount of RAM in MB. Do not
- * include swap space in that amount or the command will fail.
- */
- system ("/sbin/swapout 128");
-#endif
-#endif
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: main
- *
- * Purpose:
- *
- * Return: Success:
- *
- * Failure:
- *
- * Programmer: Robb Matzke
- * Thursday, March 12, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-int
-main (void)
-{
- static hsize_t size[2] = {REQUEST_SIZE_X, REQUEST_SIZE_Y};
- static int nread=NREAD_REQUESTS, nwrite=NWRITE_REQUESTS;
-
- unsigned char *the_data = NULL;
- hid_t file, dset, file_space=-1;
- herr_t status;
-#ifdef H5_HAVE_GETRUSAGE
- struct rusage r_start, r_stop;
-#else
- struct timeval r_start, r_stop;
-#endif
- struct timeval t_start, t_stop;
- int i, fd;
- hssize_t n;
- off_t offset;
- hssize_t start[2];
- hsize_t count[2];
-
-
-#ifdef H5_HAVE_SYS_TIMEB
- struct _timeb *tbstart = malloc(sizeof(struct _timeb));
- struct _timeb *tbstop = malloc(sizeof(struct _timeb));
-#endif
- /*
- * The extra cast in the following statement is a bug workaround for the
- * Win32 version 5.0 compiler.
- * 1998-11-06 ptl
- */
- printf ("I/O request size is %1.1fMB\n",
- (double)(hssize_t)(size[0]*size[1])/1024.0*1024);
-
- /* Open the files */
- file = H5Fcreate (HDF5_FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- assert (file>=0);
- fd = HDopen (RAW_FILE_NAME, O_RDWR|O_CREAT|O_TRUNC, 0666);
- assert (fd>=0);
-
- /* Create the dataset */
- file_space = H5Screate_simple (2, size, size);
- assert (file_space>=0);
- dset = H5Dcreate (file, "dset", H5T_NATIVE_UCHAR, file_space, H5P_DEFAULT);
- assert (dset>=0);
- the_data = malloc ((size_t)(size[0]*size[1]));
- /*initial fill for lazy malloc*/
- memset (the_data, 0xAA, (size_t)(size[0]*size[1]));
-
- /* Fill raw */
- synchronize ();
-#ifdef H5_HAVE_GETRUSAGE
-printf("Before getrusage() call\n");
- getrusage (RUSAGE_SELF, &r_start);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_start, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstart);
-#endif
-#endif
- fprintf (stderr, HEADING, "fill raw");
- for (i=0; i<nwrite; i++) {
- putc (PROGRESS, stderr);
- fflush (stderr);
- memset (the_data, 0xAA, (size_t)(size[0]*size[1]));
- }
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_stop);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_stop, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstop);
- t_start.tv_sec = tbstart->time;
- t_start.tv_usec = tbstart->millitm;
- t_stop.tv_sec = tbstop->time;
- t_stop.tv_usec = tbstop->millitm;
-#endif
-#endif
- putc ('\n', stderr);
- print_stats ("fill raw",
- &r_start, &r_stop, &t_start, &t_stop,
- (size_t)(nread*size[0]*size[1]));
-
-
- /* Fill hdf5 */
- synchronize ();
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_start);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_start, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstart);
-#endif
-#endif
- fprintf (stderr, HEADING, "fill hdf5");
- for (i=0; i<nread; i++) {
- putc (PROGRESS, stderr);
- fflush (stderr);
- status = H5Dread (dset, H5T_NATIVE_UCHAR, file_space, file_space,
- H5P_DEFAULT, the_data);
- assert (status>=0);
- }
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_stop);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_stop, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstop);
- t_start.tv_sec = tbstart->time;
- t_start.tv_usec = tbstart->millitm;
- t_stop.tv_sec = tbstop->time;
- t_stop.tv_usec = tbstop->millitm;
-#endif
-#endif
- putc ('\n', stderr);
- print_stats ("fill hdf5",
- &r_start, &r_stop, &t_start, &t_stop,
- (size_t)(nread*size[0]*size[1]));
-
- /* Write the raw dataset */
- synchronize ();
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_start);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_start, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstart);
-#endif
-#endif
- fprintf (stderr, HEADING, "out raw");
- for (i=0; i<nwrite; i++) {
- putc (PROGRESS, stderr);
- fflush (stderr);
- offset = lseek (fd, 0, SEEK_SET);
- assert (0==offset);
- n = write (fd, the_data, (size_t)(size[0]*size[1]));
- assert (n>=0 && (size_t)n==size[0]*size[1]);
- }
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_stop);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_stop, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstop);
- t_start.tv_sec = tbstart->time;
- t_start.tv_usec = tbstart->millitm;
- t_stop.tv_sec = tbstop->time;
- t_stop.tv_usec = tbstop->millitm;
-#endif
-#endif
- putc ('\n', stderr);
- print_stats ("out raw",
- &r_start, &r_stop, &t_start, &t_stop,
- (size_t)(nread*size[0]*size[1]));
-
- /* Write the hdf5 dataset */
- synchronize ();
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_start);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_start, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstart);
-#endif
-#endif
- fprintf (stderr, HEADING, "out hdf5");
- for (i=0; i<nwrite; i++) {
- putc (PROGRESS, stderr);
- fflush (stderr);
- status = H5Dwrite (dset, H5T_NATIVE_UCHAR, H5S_ALL, H5S_ALL,
- H5P_DEFAULT, the_data);
- assert (status>=0);
- }
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_stop);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_stop, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstop);
- t_start.tv_sec = tbstart->time;
- t_start.tv_usec = tbstart->millitm;
- t_stop.tv_sec = tbstop->time;
- t_stop.tv_usec = tbstop->millitm;
-#endif
-#endif
- putc ('\n', stderr);
- print_stats ("out hdf5",
- &r_start, &r_stop, &t_start, &t_stop,
- (size_t)(nread*size[0]*size[1]));
-
- /* Read the raw dataset */
- synchronize ();
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_start);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_start, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstart);
-#endif
-#endif
- fprintf (stderr, HEADING, "in raw");
- for (i=0; i<nread; i++) {
- putc (PROGRESS, stderr);
- fflush (stderr);
- offset = lseek (fd, 0, SEEK_SET);
- assert (0==offset);
- n = read (fd, the_data, (size_t)(size[0]*size[1]));
- assert (n>=0 && (size_t)n==size[0]*size[1]);
- }
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_stop);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_stop, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstop);
- t_start.tv_sec = tbstart->time;
- t_start.tv_usec = tbstart->millitm;
- t_stop.tv_sec = tbstop->time;
- t_stop.tv_usec = tbstop->millitm;
-#endif
-#endif
- putc ('\n', stderr);
- print_stats ("in raw",
- &r_start, &r_stop, &t_start, &t_stop,
- (size_t)(nread*size[0]*size[1]));
-
-
- /* Read the hdf5 dataset */
- synchronize ();
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_start);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_start, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstart);
-#endif
-#endif
- fprintf (stderr, HEADING, "in hdf5");
- for (i=0; i<nread; i++) {
- putc (PROGRESS, stderr);
- fflush (stderr);
- status = H5Dread (dset, H5T_NATIVE_UCHAR, file_space, file_space,
- H5P_DEFAULT, the_data);
- assert (status>=0);
- }
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_stop);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_stop, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstop);
- t_start.tv_sec = tbstart->time;
- t_start.tv_usec = tbstart->millitm;
- t_stop.tv_sec = tbstop->time;
- t_stop.tv_usec = tbstop->millitm;
-#endif
-#endif
- putc ('\n', stderr);
- print_stats ("in hdf5",
- &r_start, &r_stop, &t_start, &t_stop,
- (size_t)(nread*size[0]*size[1]));
-
- /* Read hyperslab */
- assert (size[0]>20 && size[1]>20);
- start[0] = start[1] = 10;
- count[0] = count[1] = size[0]-20;
- status = H5Sselect_hyperslab (file_space, H5S_SELECT_SET, start, NULL, count, NULL);
- assert (status>=0);
- synchronize ();
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_start);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_start, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstart);
-#endif
-#endif
- fprintf (stderr, HEADING, "in hdf5 partial");
- for (i=0; i<nread; i++) {
- putc (PROGRESS, stderr);
- fflush (stderr);
- status = H5Dread (dset, H5T_NATIVE_UCHAR, file_space, file_space,
- H5P_DEFAULT, the_data);
- assert (status>=0);
- }
-#ifdef H5_HAVE_GETRUSAGE
- getrusage (RUSAGE_SELF, &r_stop);
-#endif
-#ifdef H5_HAVE_GETTIMEOFDAY
- gettimeofday (&t_stop, NULL);
-#else
-#ifdef H5_HAVE_SYS_TIMEB
- _ftime(tbstop);
- t_start.tv_sec = tbstart->time;
- t_start.tv_usec = tbstart->millitm;
- t_stop.tv_sec = tbstop->time;
- t_stop.tv_usec = tbstop->millitm;
-#endif
-#endif
- putc ('\n', stderr);
- print_stats ("in hdf5 partial",
- &r_start, &r_stop, &t_start, &t_stop,
- (size_t)(nread*count[0]*count[1]));
-
-
-
- /* Close everything */
- HDclose (fd);
- H5Dclose (dset);
- H5Sclose (file_space);
- H5Fclose (file);
-
- return 0;
-}
diff --git a/test/overhead.c b/test/overhead.c
deleted file mode 100644
index 60a5e90..0000000
--- a/test/overhead.c
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * Copyright (C) 1998 NCSA
- * All rights reserved.
- *
- * Programmer: Robb Matzke <matzke@llnl.gov>
- * Monday, September 28, 1998
- *
- * Purpose: Creates a chunked dataset and measures the storage overhead.
- */
-
-/* See H5private.h for how to include headers */
-#undef NDEBUG
-#include "hdf5.h"
-
-#ifdef H5_STDC_HEADERS
-# include <ctype.h>
-# include <fcntl.h>
-# include <stdlib.h>
-# include <sys/stat.h>
-# include <string.h>
-#endif
-
-#ifdef H5_HAVE_IO_H
-# include <io.h>
-#endif
-
-#ifdef H5_HAVE_UNISTD_H
-# include <sys/types.h>
-# include <unistd.h>
-#endif
-
-#ifdef H5_HAVE_IO_H
-# include <io.h>
-#endif
-
-#ifndef H5_HAVE_ATTRIBUTE
-# undef __attribute__
-# define __attribute__(X) /*void*/
-# define UNUSED /*void*/
-#else
-# define UNUSED __attribute__((unused))
-#endif
-
-#define FILE_NAME_1 "overhead.h5"
-#define FALSE 0
-#define TRUE 1
-
-typedef enum fill_t {
- FILL_ALL,
- FILL_FORWARD,
- FILL_REVERSE,
- FILL_INWARD,
- FILL_OUTWARD,
- FILL_RANDOM
-} fill_t;
-
-
-/*-------------------------------------------------------------------------
- * Function: usage
- *
- * Purpose: Prints a usage message and exits.
- *
- * Return: never returns
- *
- * Programmer: Robb Matzke
- * Wednesday, September 30, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-usage(const char *prog)
-{
- fprintf(stderr, "usage: %s [STYLE|cache] [LEFT [MIDDLE [RIGHT]]]\n",
- prog);
- fprintf(stderr, "\
- STYLE is the order that the dataset is filled and should be one of:\n\
- forward -- Fill the dataset from lowest address to highest\n\
- address. This style tests the right split ratio.\n\
- reverse -- Fill the dataset from highest address to lowest\n\
- address. This is the reverse order of `forward' and\n\
- tests the left split ratio.\n\
- inward -- Fill beginning at both the lowest and highest\n\
- addresses and work in toward the center of the\n\
- dataset. This tests the middle split ratio.\n\
- outward -- Start at the center of the dataset and work outward\n\
- toward the lowest and highest addresses. This tests\n\
- both left and right split ratios.\n\
- random -- Write the chunks of the dataset in random order. This\n\
- tests all split ratios.\n\
- If no fill style is specified then all fill styles are tried and a\n\
- single value is printed for each one.\n\
-\n\
- If the word `cache' is used instead of a fill style then the raw data\n\
- cache is enabled. It is not possible to enable the raw data cache when\n\
- a specific fill style is used because H5Fflush() is called after each\n\
- chunk is written in order to calculate overhead during the test. If\n\
- the cache is enabled then chunks are written to disk in different orders\n\
- than the actual H5Dwrite() calls in the test due to collisions and the\n\
- resulting B-tree will be split differently.\n\
-\n\
- LEFT, MIDDLE, and RIGHT are the ratios to use for splitting and should\n\
- be values between zero and one, inclusive.\n");
- exit(1);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: cleanup
- *
- * Purpose: Removes test files
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * Thursday, June 4, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-cleanup (void)
-{
- if (!getenv ("HDF5_NOCLEANUP")) {
- remove (FILE_NAME_1);
- }
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: display_error_cb
- *
- * Purpose: Displays the error stack after printing "*FAILED*".
- *
- * Return: Success: 0
- *
- * Failure: -1
- *
- * Programmer: Robb Matzke
- * Wednesday, March 4, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-display_error_cb (void UNUSED *client_data)
-{
- puts ("*FAILED*");
- H5Eprint (stdout);
- return 0;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: test
- *
- * Purpose: The guts of the test
- *
- * Return: Success: 0
- *
- * Failure: number of errors
- *
- * Programmer: Robb Matzke
- * Wednesday, September 30, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static int
-test(fill_t fill_style, const double splits[],
- hbool_t verbose, hbool_t use_rdcc)
-{
- hid_t file, fapl, dcpl, xfer, mspace, fspace, dset;
- hsize_t ch_size[1] = {1}; /*chunk size */
- hsize_t cur_size[1] = {1000}; /*current dataset size */
- hsize_t max_size[1] = {H5S_UNLIMITED}; /*maximum dataset size */
- hssize_t hs_start[1]; /*hyperslab start offset*/
- hsize_t hs_count[1] = {1}; /*hyperslab nelmts */
- int fd; /*h5 file direct */
- static int *had = NULL; /*for random filling */
- const char *sname; /*fill style nam */
- int mdc_nelmts; /*num meta objs to cache*/
- hsize_t i;
- int j;
- struct stat sb;
-
- if (!had) had = calloc(cur_size[0], sizeof(int));
- if ((fapl=H5Pcreate(H5P_FILE_ACCESS))<0) goto error;
- if (!use_rdcc) {
- if (H5Pget_cache(fapl, &mdc_nelmts, NULL, NULL, NULL)<0) goto error;
- if (H5Pset_cache(fapl, mdc_nelmts, 0, 0, 0.0)<0) goto error;
- }
- if ((file=H5Fcreate(FILE_NAME_1, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0) {
- goto error;
- }
- if ((dcpl=H5Pcreate(H5P_DATASET_CREATE))<0) goto error;
- if (H5Pset_chunk(dcpl, 1, ch_size)<0) goto error;
- if ((xfer=H5Pcreate(H5P_DATASET_XFER))<0) goto error;
- if (H5Pset_btree_ratios(xfer, splits[0], splits[1], splits[2])<0) {
- goto error;
- }
- if ((fspace=H5Screate_simple(1, cur_size, max_size))<0) goto error;
- if ((mspace=H5Screate_simple(1, ch_size, ch_size))<0) goto error;
- if ((dset=H5Dcreate(file, "chunked", H5T_NATIVE_INT,
- fspace, dcpl))<0) goto error;
-
-#if !defined( __MWERKS__)
-
- /*
- workaround for a bug in the Metrowerks open function
- pvn
- */
- if ((fd=open(FILE_NAME_1, O_RDONLY))<0) goto error;
-#endif
-
- for (i=1; i<=cur_size[0]; i++) {
-
- /* Decide which chunk to write to */
- switch (fill_style) {
- case FILL_FORWARD:
- hs_start[0] = i-1;
- break;
- case FILL_REVERSE:
- hs_start[0] = cur_size[0]-i;
- break;
- case FILL_INWARD:
- hs_start[0] = i%2 ? i/2 : cur_size[0]-i/2;
- break;
- case FILL_OUTWARD:
- j = (cur_size[0]-i)+1;
- hs_start[0] = j%2 ? j/2 : cur_size[0]-j/2;
- break;
- case FILL_RANDOM:
- for (j=rand()%cur_size[0]; had[j]; j=(j+1)%cur_size[0]) /*void*/;
- hs_start[0] = j;
- had[j] = 1;
- break;
- case FILL_ALL:
- abort();
- }
-
- /* Write the chunk */
- if (H5Sselect_hyperslab(fspace, H5S_SELECT_SET, hs_start, NULL,
- hs_count, NULL)<0) goto error;
- if (H5Dwrite(dset, H5T_NATIVE_INT, mspace, fspace, xfer, &i)<0) {
- goto error;
- }
-
-
-#if !defined( __MWERKS__)
-
- /* Determine overhead */
- if (verbose) {
- if (H5Fflush(file, H5F_SCOPE_LOCAL)<0) goto error;
- if (fstat(fd, &sb)<0) goto error;
- /*
- * The extra cast in the following statement is a bug workaround
- * for the Win32 version 5.0 compiler.
- * 1998-11-06 ptl
- */
- printf("%4lu %8.3f ***\n",
- (unsigned long)i,
- (double)(hssize_t)(sb.st_size-i*sizeof(int))/(hssize_t)i);
- }
-#endif
-
-
- }
-
- H5Dclose(dset);
- H5Sclose(mspace);
- H5Sclose(fspace);
- H5Pclose(dcpl);
- H5Fclose(file);
-
- if (!verbose) {
- switch (fill_style) {
- case FILL_FORWARD:
- sname = "forward";
- break;
- case FILL_REVERSE:
- sname = "reverse";
- break;
- case FILL_INWARD:
- sname = "inward";
- break;
- case FILL_OUTWARD:
- sname = "outward";
- break;
- case FILL_RANDOM:
- sname = "random";
- break;
- case FILL_ALL:
- abort();
- }
-
-#if !defined( __MWERKS__)
-
- if (fstat(fd, &sb)<0) goto error;
- printf("%-7s %8.3f\n", sname,
- (double)(hssize_t)(sb.st_size-cur_size[0]*sizeof(int))/
- (hssize_t)cur_size[0]);
-#endif
-
- }
-
-
-#if !defined( __MWERKS__)
- close(fd);
-#endif
-
- return 0;
-
- error:
- H5Dclose(dset);
- H5Sclose(mspace);
- H5Sclose(fspace);
- H5Pclose(dcpl);
- H5Fclose(file);
- free(had);
- close(fd);
- return 1;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: main
- *
- * Purpose:
- *
- * Return: Success: zero
- *
- * Failure: non-zero
- *
- * Programmer: Robb Matzke
- * Monday, September 28, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-int
-main(int argc, char *argv[])
-{
- hid_t xfer;
- fill_t fill_style = FILL_ALL;
- hbool_t use_cache = FALSE;
- double splits[3];
- int i, j, nerrors=0;
-
- /* Default split ratios */
- H5Eset_auto(display_error_cb, NULL);
- if ((xfer=H5Pcreate(H5P_DATASET_XFER))<0) goto error;
- if (H5Pget_btree_ratios(xfer, splits+0, splits+1, splits+2)<0) {
- goto error;
- }
- if (H5Pclose(xfer)<0) goto error;
-
- /* Parse command-line options */
- for (i=1, j=0; i<argc; i++) {
- if (!strcmp(argv[i], "forward")) {
- fill_style = FILL_FORWARD;
- } else if (!strcmp(argv[i], "reverse")) {
- fill_style = FILL_REVERSE;
- } else if (!strcmp(argv[i], "inward")) {
- fill_style = FILL_INWARD;
- } else if (!strcmp(argv[i], "outward")) {
- fill_style = FILL_OUTWARD;
- } else if (!strcmp(argv[i], "random")) {
- fill_style = FILL_RANDOM;
- } else if (!strcmp(argv[i], "cache")) {
- use_cache = TRUE;
- } else if (j<3 && (isdigit(argv[i][0]) || '.'==argv[i][0])) {
- splits[j++] = strtod(argv[i], NULL);
- } else {
- usage(argv[0]);
- }
- }
-
- if (FILL_ALL==fill_style) {
- printf("%-7s %8s\n", "Style", "Bytes/Chunk");
- printf("%-7s %8s\n", "-----", "-----------");
- nerrors += test(FILL_FORWARD, splits, FALSE, use_cache);
- nerrors += test(FILL_REVERSE, splits, FALSE, use_cache);
- nerrors += test(FILL_INWARD, splits, FALSE, use_cache);
- nerrors += test(FILL_OUTWARD, splits, FALSE, use_cache);
- nerrors += test(FILL_RANDOM, splits, FALSE, use_cache);
- } else {
- if (use_cache) usage(argv[0]);
- nerrors += test(fill_style, splits, TRUE, FALSE);
- }
- if (nerrors>0) goto error;
- cleanup();
- return 0;
-
- error:
- fprintf(stderr, "*** ERRORS DETECTED ***\n");
- return 1;
-}