summaryrefslogtreecommitdiffstats
path: root/tools/lib/io_timer.h
diff options
context:
space:
mode:
authorAlbert Cheng <acheng@hdfgroup.org>2015-01-01 16:24:55 (GMT)
committerAlbert Cheng <acheng@hdfgroup.org>2015-01-01 16:24:55 (GMT)
commitc803666ec2330ef548e65bb3699c0f89d2adb45d (patch)
tree1f0437e96b9872b43cc941976c84a8284c5a87fa /tools/lib/io_timer.h
parentdcc956f5941b01e9ce50d02b37bdcea14c5fb06b (diff)
downloadhdf5-c803666ec2330ef548e65bb3699c0f89d2adb45d.zip
hdf5-c803666ec2330ef548e65bb3699c0f89d2adb45d.tar.gz
hdf5-c803666ec2330ef548e65bb3699c0f89d2adb45d.tar.bz2
[svn-r25940] HDFFV-9046: reorganize hdf5/perform, step 2
Move timing measurement routines used by h5perf and h5perf_serial to tools/lib so that they can be used by other tools too. tools/lib/io_timer.c tools/lib/io_timer.h tools/perform/io_timer.c tools/perform/io_timer.h renamed perform/io_timer.[ch] to lib/io_timer.[ch] tools/lib/Makefile.am tools/lib/Makefile.in tools/lib/CMakeLists.txt tools/perform/Makefile.in tools/perform/Makefile.am tools/perform/CMakeLists.txt MANIFEST updated due to the move. Tested; h5committest and jam (serial)
Diffstat (limited to 'tools/lib/io_timer.h')
-rw-r--r--tools/lib/io_timer.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/tools/lib/io_timer.h b/tools/lib/io_timer.h
new file mode 100644
index 0000000..5480ed5
--- /dev/null
+++ b/tools/lib/io_timer.h
@@ -0,0 +1,94 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * 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://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#ifndef IO_TIMER__
+#define IO_TIMER__
+
+#include "hdf5.h"
+#include "H5private.h"
+
+#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_WINSOCK2_H
+# include <winsock2.h>
+#endif /* H5_HAVE_WINSOCK2_H */
+/* The different types of timers we can have */
+typedef enum timer_type_ {
+ HDF5_FILE_OPENCLOSE,
+ HDF5_DATASET_CREATE,
+ HDF5_MPI_WRITE,
+ HDF5_MPI_READ,
+ HDF5_FILE_READ_OPEN,
+ HDF5_FILE_READ_CLOSE,
+ HDF5_FILE_WRITE_OPEN,
+ HDF5_FILE_WRITE_CLOSE,
+ HDF5_FINE_WRITE_FIXED_DIMS,
+ HDF5_FINE_READ_FIXED_DIMS,
+ HDF5_GROSS_WRITE_FIXED_DIMS,
+ HDF5_GROSS_READ_FIXED_DIMS,
+ HDF5_RAW_WRITE_FIXED_DIMS,
+ HDF5_RAW_READ_FIXED_DIMS,
+ NUM_TIMERS
+} timer_type;
+
+typedef enum clock_type_ {
+ SYS_CLOCK = 0, /* Use system clock to measure time */
+ MPI_CLOCK = 1 /* Use MPI clock to measure time */
+} clock_type;
+
+/* Miscellaneous identifiers */
+enum {
+ TSTART, /* Start a specified timer */
+ TSTOP /* Stop a specified timer */
+};
+
+/* The performance time structure */
+typedef struct io_time_t {
+ clock_type type;
+ double total_time[NUM_TIMERS];
+ double mpi_timer[NUM_TIMERS];
+ struct timeval sys_timer[NUM_TIMERS];
+} io_time_t;
+
+/* External function declarations */
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#if 1
+/* from sio_time.h */
+//extern io_time_t *sio_time_new(void);
+//extern void sio_time_destroy(io_time_t *pt);
+//extern void set_timer_type(io_time_t *pt);
+//extern io_time_t *set_time(io_time_t *pt, timer_type t, int start_stop);
+//extern double get_time(io_time_t *pt, timer_type t);
+#endif
+extern io_time_t *io_time_new(clock_type t);
+extern void io_time_destroy(io_time_t *pt);
+//extern void set_timer_type(io_time_t *pt, clock_type type);
+//extern clock_type get_timer_type(io_time_t *pt);
+extern io_time_t *set_time(io_time_t *pt, timer_type t, int start_stop);
+extern double get_time(io_time_t *pt, timer_type t);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* IO_TIMER__ */