summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishwanath Venkatesan <vish@hdfgroup.org>2013-08-14 01:44:05 (GMT)
committerVishwanath Venkatesan <vish@hdfgroup.org>2013-08-14 01:44:05 (GMT)
commit38f6eecef077daaaf0ff97e378503604179d3e40 (patch)
treee2aabe6101010fdee5c19886a6d3141b6798e655
parent8b0b6610386a0019b428645db3003ce03b277d4a (diff)
downloadhdf5-38f6eecef077daaaf0ff97e378503604179d3e40.zip
hdf5-38f6eecef077daaaf0ff97e378503604179d3e40.tar.gz
hdf5-38f6eecef077daaaf0ff97e378503604179d3e40.tar.bz2
[svn-r24008] Adding the first commit of the benchmark
-rw-r--r--benchmark/FFbench/Makefile23
-rw-r--r--benchmark/FFbench/eff_benchmark.c77
-rw-r--r--benchmark/FFbench/ffbench.c278
-rw-r--r--benchmark/FFbench/ffbench.h63
-rw-r--r--benchmark/FFbench/ffbench_common.h48
-rw-r--r--benchmark/FFbench/ffbench_util.c121
-rw-r--r--benchmark/FFbench/ffbench_util.h32
-rw-r--r--benchmark/FFbench/test_config22
-rw-r--r--benchmark/FFbench/test_server.c50
-rw-r--r--benchmark/iodrc6
-rw-r--r--testff/compactor_tests/parallel_write.c3
11 files changed, 721 insertions, 2 deletions
diff --git a/benchmark/FFbench/Makefile b/benchmark/FFbench/Makefile
new file mode 100644
index 0000000..51b5644
--- /dev/null
+++ b/benchmark/FFbench/Makefile
@@ -0,0 +1,23 @@
+CC=h5pcc
+CFLAGS=-O3
+
+
+
+all: eff_bench server
+
+
+eff_bench: eff_benchmark.c ffbench.o ffbench_util.o
+ $(CC) -o eff_bench eff_benchmark.c ffbench.o ffbench_util.o
+
+ffbench.o: ffbench.c ffbench.h ffbench_common.h
+ $(CC) $(CFLAGS) -c ffbench.c
+
+ffbench_util.o: ffbench_util.c ffbench_util.h ffbench_common.h
+ $(CC) $(CFLAGS) -c ffbench_util.c
+
+server:
+ $(CC) -o server test_server.c
+clean:
+ rm -rf *.o *~ *.cfg
+ rm -rf test/*~ test/test_clock
+ rm -rf eff_bench server
diff --git a/benchmark/FFbench/eff_benchmark.c b/benchmark/FFbench/eff_benchmark.c
new file mode 100644
index 0000000..f7e43a9
--- /dev/null
+++ b/benchmark/FFbench/eff_benchmark.c
@@ -0,0 +1,77 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/*
+ Benchmark for Exascale Fast forward operations
+ Programmer : Vishwanath Venkatesan
+*/
+
+
+#include "ffbench.h"
+
+int main (int argc, char **argv){
+
+
+ MPI_Comm comm = MPI_COMM_WORLD;
+ MPI_Info info = MPI_INFO_NULL;
+ int provided;
+ int ret_value = FFB_SUCCESS;
+ hid_t file_id, dset_id;
+ hid_t fapl_id;
+ int rank;
+ int size;
+
+ MPI_Init_thread(&argc,&argv, MPI_THREAD_MULTIPLE, &provided);
+ if(MPI_THREAD_MULTIPLE != provided) {
+ DEBUG_LINE("MPI does not have MPI_THREAD_MULTIPLE support\n");
+ ret_value = FFB_FAIL;
+ goto exit;
+ }
+
+ if (argc < 2){
+ DEBUG_LINE ("Configuration file needed to start \n")
+ MPI_Finalize();
+ goto exit;
+ }
+
+ MPI_Comm_rank(comm, &rank);
+ MPI_Comm_size(comm, &size);
+
+ FFbench_read_config_file (argv[1], comm);
+ FFbench_print_args();
+ EFF_init (comm, info);
+ if (FFB_SUCCESS != FFbench_create_file_and_dataset (&file_id,
+ &dset_id,
+ &fapl_id,
+ rank,
+ comm,
+ info)){
+ DEBUG_LINE("Error in File/dataset creation")
+ }
+
+
+
+
+
+ H5Pclose(fapl_id);
+ H5Dclose(dset_id);
+ H5Fclose(file_id);
+
+ EFF_finalize();
+ MPI_Finalize();
+ exit:
+ return ret_value;
+}
diff --git a/benchmark/FFbench/ffbench.c b/benchmark/FFbench/ffbench.c
new file mode 100644
index 0000000..d95c28c
--- /dev/null
+++ b/benchmark/FFbench/ffbench.c
@@ -0,0 +1,278 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+#include "ffbench.h"
+
+
+/******************************************
+/*FFbench : Main file and all necessary
+ functions
+
+ Programmer : Vishwanath Venkatesan
+***********************************************/
+
+/*-------------------------------------------------------------------------
+ * Function: FFbench_string_trim
+ *
+ * Purpose : Function to trim whitespaces from a string
+ *
+ * Return: SUCCESS : FFB_SUCCESS
+ * FAILURE : FFB_FAIL
+ *
+ * Programmer: Vishwanath Venkatesan
+ * August, 2013
+ *--------------------------------------------------------------------------
+ */
+
+
+int FFbench_string_trim (char *str){
+
+ int ret_value = FFB_SUCCESS;
+ char *end = NULL;
+
+ /* Trim leading space*/
+ while(isspace(*str)) str++;
+
+ /* Trim trailing space */
+ end = str + strlen(str) - 1;
+ while(end > str && isspace(*end)) end--;
+
+ /* Write new null terminator */
+ *(end+1) = 0;
+
+ return ret_value;
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: FFbench_read_config_file
+ *
+ * Purpose : Function to read the config file for the benchmark
+ *
+ * Return: SUCCESS : FFB_SUCCESS
+ * FAILURE : FFB_FAIL
+ *
+ * Programmer: Vishwanath Venkatesan
+ * August, 2013
+ *--------------------------------------------------------------------------
+ */
+
+
+int FFbench_read_config_file (char *fname,
+ MPI_Comm comm){
+
+ int ret_value = FFB_SUCCESS;
+ FILE *fp;
+ char *tmp_string = NULL;
+ int cnt = 0, i;
+ char *charLoc = NULL;
+ int rank;
+
+ MPI_Comm_rank (comm, &rank);
+
+ input_args = (file_args *) malloc (sizeof(file_args));
+ if (NULL == input_args){
+ DEBUG_LINE ("Error allocating File Args struct")
+ }
+
+ if (!rank){
+
+ fp = fopen (fname, "r");
+
+
+ tmp_string = (char *) malloc (NAME_SIZE * sizeof (char));
+ if (NULL == tmp_string){
+ DEBUG_LINE("Error in allcating Dsetname\n")
+ ret_value = FFB_FAIL;
+ }
+
+ while (fgets (tmp_string, NAME_SIZE, fp) != NULL){
+
+ charLoc = strchr (tmp_string, '#');
+ if (charLoc != NULL){
+ continue;
+ }
+ switch(cnt){
+ case 0:
+ strcpy (input_args->filename, tmp_string);
+ FFbench_string_trim(input_args->filename);
+ if (strlen(input_args->filename) == 0){
+ DEBUG_LINE("Empty Filename \n")
+ ret_value = FFB_FAIL;
+ goto exit;
+ }
+ break;
+ case 1:
+ strcpy (input_args->dsetname, tmp_string);
+ FFbench_string_trim(input_args->dsetname);
+ if (strlen(input_args->dsetname) == 0){
+ DEBUG_LINE("Empty Dsetname\n")
+ ret_value = FFB_FAIL;
+ goto exit;
+ }
+ break;
+ case 2:
+ input_args->n_coords = atol(tmp_string);
+ if (input_args->n_coords == 0){
+ DEBUG_LINE ("Coordinates cannot be 0\n")
+ ret_value = FFB_FAIL;
+ goto exit;
+ }
+ break;
+ case 3:
+ input_args->coords[0] = atol(tmp_string);
+ for ( i = 1; i < input_args->n_coords; i++){
+ tmp_string[0] = 0;
+ fgets (tmp_string, NAME_SIZE, fp);
+ input_args->coords[i] = atol(tmp_string);
+ }
+ break;
+ case 4:
+ FFbench_string_trim(tmp_string);
+ if(!strcmp("READ", tmp_string)){
+ input_args->rw_flag = READ;
+ }
+ else{
+ input_args->rw_flag = WRITE;
+ }
+ break;
+ case 5:
+ input_args->num_ops = atoi(tmp_string);
+ break;
+ case 6:
+ input_args->overlap = atoi(tmp_string);
+ break;
+ }
+ cnt++;
+ tmp_string[0] = 0;
+ }
+ }
+ /*Lets broadcast this input array to all processes!*/
+ MPI_Bcast( (void *)input_args,
+ sizeof(*input_args),
+ MPI_BYTE,
+ 0,
+ comm);
+
+
+ exit:
+ return ret_value;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: FFbench_print_args
+ *
+ * Purpose : Print the created input structure from config file
+ *
+ * Return: Void routine
+ *
+ * Programmer: Vishwanath Venkatesan
+ * August, 2013
+ *--------------------------------------------------------------------------
+ */
+
+void FFbench_print_args(){
+
+ hsize_t j;
+
+ DEBUG_PRINT("Filename %s, Dataset: %s, ncoords: %lli, rw: %d, overlap: %d \n",
+ input_args->filename,
+ input_args->dsetname,
+ input_args->n_coords,
+ input_args->rw_flag,
+ input_args->overlap)
+
+ for (j =0; j< input_args->n_coords;
+ j++){
+
+ DEBUG_PRINT("coord[%lli]: %lli\n",j , input_args->coords[j])
+ }
+
+
+}
+
+/*-------------------------------------------------------------------------
+ * Function: FFbench_create_file
+ *
+ * Purpose : Function to read the config file for the benchmark
+ *
+ * Return: SUCCESS : FFB_SUCCESS
+ * FAILURE : FFB_FAIL
+ *
+ * Programmer: Vishwanath Venkatesan
+ * August, 2013
+ *--------------------------------------------------------------------------
+ */
+
+
+int FFbench_create_file_and_dataset (hid_t *file_id, hid_t *dset_id,
+ hid_t *fapl_id,
+ int rank,
+ MPI_Comm comm,
+ MPI_Info info){
+
+ int ret_value = FFB_SUCCESS;
+ hid_t fapl_self_id;
+ hid_t tmp_file_id, tmp_dset_id;
+ hid_t dataspace;
+ hsize_t *dimsf, j;
+
+
+ if (!rank){
+
+ dimsf = (hsize_t *) malloc (input_args->n_coords * sizeof(hsize_t));
+ if (NULL == dimsf){
+ DEBUG_LINE ("Error in allocating dimsf\n");
+ ret_value = FFB_FAIL;
+ goto exit;
+ }
+
+ for (j = 0; j < input_args->n_coords;
+ j++){
+ dimsf[j] = input_args->coords[j];
+ }
+ dataspace = H5Screate_simple (input_args->n_coords,
+ dimsf,
+ NULL);
+
+
+ fapl_self_id = H5Pcreate (H5P_FILE_ACCESS);
+ H5Pset_fapl_iod(fapl_self_id, MPI_COMM_SELF, MPI_INFO_NULL);
+ tmp_file_id = H5Fcreate(input_args->filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_self_id);
+ tmp_dset_id = H5Dcreate(tmp_file_id,input_args->dsetname,
+ H5T_NATIVE_INT,dataspace,
+ H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+ H5Pclose(fapl_self_id);
+ H5Dclose(tmp_dset_id);
+ H5Sclose(dataspace);
+ H5Fclose(tmp_file_id);
+ }
+
+ MPI_Barrier(comm);
+
+ *fapl_id = H5Pcreate (H5P_FILE_ACCESS);
+ H5Pset_fapl_iod(*fapl_id, MPI_COMM_WORLD, MPI_INFO_NULL);
+
+ *file_id = H5Fopen(input_args->filename, H5F_ACC_RDWR, *fapl_id);
+ *dset_id = H5Dopen(*file_id,
+ input_args->dsetname,H5P_DEFAULT);
+
+
+
+
+ exit:
+ return ret_value;
+}
diff --git a/benchmark/FFbench/ffbench.h b/benchmark/FFbench/ffbench.h
new file mode 100644
index 0000000..ffbba6a
--- /dev/null
+++ b/benchmark/FFbench/ffbench.h
@@ -0,0 +1,63 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#include "ffbench_common.h"
+#include "hdf5.h"
+#include "mpi.h"
+
+
+#ifndef _FFBENCH_H_
+#define _FFBENCH_H_
+
+
+#define NAME_SIZE 1024
+#define MAX_DIMS 32
+
+/*FFbench : Main file and all necessary
+ functions
+ Programmer : Vishwanath Venkatesan*/
+
+/* Declarations necessary for
+ the benchmark*/
+
+
+typedef struct{
+ char filename[NAME_SIZE];
+ char dsetname[NAME_SIZE];
+ hsize_t n_coords;
+ hsize_t coords[MAX_DIMS];
+ int rw_flag;
+ int num_ops;
+ int overlap;
+
+}file_args;
+
+file_args *input_args;
+
+
+
+int FFbench_initialize(int argc, char **argv);
+int FFbench_read_config_file (char *fname, MPI_Comm comm);
+int FFbench_string_trim(char *str);
+void FFbench_print_args();
+int FFbench_create_file_and_dataset (hid_t *file_id, hid_t *dset_id,
+ hid_t *fapl_id,
+ int rank,
+ MPI_Comm comm,
+ MPI_Info info);
+
+
+
+#endif
diff --git a/benchmark/FFbench/ffbench_common.h b/benchmark/FFbench/ffbench_common.h
new file mode 100644
index 0000000..9fa2558
--- /dev/null
+++ b/benchmark/FFbench/ffbench_common.h
@@ -0,0 +1,48 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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 _FFBENCH_COMMON_H
+#define _FFBENCH_COMMON_H
+
+#include <stdlib.h>
+#include <sys/time.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define FFB_SUCCESS 0
+#define FFB_FAIL -1
+#define DEBUG
+
+#define READ 290
+#define WRITE 390
+
+
+typedef struct timeval timer;
+typedef unsigned long long length_t;
+
+
+#ifdef DEBUG
+#define LOC fprintf (stderr,"in %s:%d ", __FILE__, __LINE__);
+#define DEBUG_PRINT(fmt, ...) LOC fprintf (stderr, fmt,__VA_ARGS__);
+#define DEBUG_LINE(text) LOC fprintf (stderr, text);
+#else
+#define DEBUG_PRINT(fmt,...)
+#define DEBUG_LINE(text)
+#endif
+
+
+
+#endif /*FFBENCH_COMMON*/
diff --git a/benchmark/FFbench/ffbench_util.c b/benchmark/FFbench/ffbench_util.c
new file mode 100644
index 0000000..503a744
--- /dev/null
+++ b/benchmark/FFbench/ffbench_util.c
@@ -0,0 +1,121 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#include "ffbench_util.h"
+
+
+/*-------------------------------------------------------------------------
+ * Function: FFbench_timer_start()
+ *
+ * Purpose : Start timer
+ *
+ * Return: SUCCESS : FFB_SUCCESS
+ * FAILURE : FFB_FAIL
+ *
+ * Programmer: Vishwanath Venkatesan
+ * August, 2013
+ *--------------------------------------------------------------------------
+ */
+
+int FFbench_timer_start(timer *rettimer){
+
+ int ret_value = FFB_SUCCESS;
+ timer starttime;
+
+ if (FFB_SUCCESS != gettimeofday(&starttime, NULL))
+ ret_value = FFB_FAIL;
+
+ *rettimer = starttime;
+ return ret_value;
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: FFbench_timer_end();
+ *
+ * Purpose : End timer
+ *
+ * Return: SUCCESS : FFB_SUCCESS
+ * FAILURE : FFB_FAIL
+ *
+ * Programmer: Vishwanath Venkatesan
+ * August, 2013
+ *--------------------------------------------------------------------------
+ */
+
+int FFbench_timer_end(timer *rettimer){
+
+ int ret_value = FFB_SUCCESS;
+ timer endtime;
+
+ if (FFB_SUCCESS != gettimeofday(&endtime, NULL)){
+ ret_value = FFB_FAIL;
+ }
+
+ *rettimer = endtime;
+ return ret_value;
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: FFbench_timer_gettime
+ *
+ * Purpose : Calculate the total_time consumed
+ *
+ * Return: SUCCESS : Positive
+ * FAILURE : Negative
+ *
+ * Programmer: Vishwanath Venkatesan
+ * August, 2013
+ *--------------------------------------------------------------------------
+ */
+
+double FFbench_timer_gettime(timer start,
+ timer end){
+
+ double elapsedTime;
+
+ elapsedTime = (end.tv_sec - start.tv_sec) * 1000.0;
+ elapsedTime += (end.tv_usec - start.tv_usec) / 1000.0;
+
+ return elapsedTime;
+
+}
+
+/*-------------------------------------------------------------------------
+ * Function: FFbench_getBandwidth
+ *
+ * Purpose : Get the I/O bandwidth from the totalbytes written
+ * + totat time consumed in MB/s. The input is expected in
+ * bytes
+ *
+ * Return: SUCCESS : Positive
+ * FAILURE : Negative
+ *
+ * Programmer: Vishwanath Venkatesan
+ * August, 2013
+ *--------------------------------------------------------------------------
+ */
+
+double FFbench_getBandwidth(length_t totallength,
+ double totaltime){
+
+ /*Convert to MB*/
+ totallength /= 1024;
+ totallength /= 1024;
+
+ return (double) (totallength/totaltime);
+
+}
diff --git a/benchmark/FFbench/ffbench_util.h b/benchmark/FFbench/ffbench_util.h
new file mode 100644
index 0000000..bc1f8e6
--- /dev/null
+++ b/benchmark/FFbench/ffbench_util.h
@@ -0,0 +1,32 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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 _FFBENCH_UTIL_H
+#define _FFBENCH_UTIL_H
+
+#include "ffbench_common.h"
+
+
+/*FFbench : Utility funcitons
+ Programmer : Vishwanath Venkatesan*/
+
+int FFbench_timer_start(timer *);
+int FFbench_timer_end(timer *);
+double FFbench_timer_gettime(timer, timer);
+double FFbench_getBandwidth(length_t totallength, double totaltime);
+
+
+
+#endif
diff --git a/benchmark/FFbench/test_config b/benchmark/FFbench/test_config
new file mode 100644
index 0000000..70aac27
--- /dev/null
+++ b/benchmark/FFbench/test_config
@@ -0,0 +1,22 @@
+# ------------------------------------
+# Sample configuration file
+# Order of information to be provided
+# filename
+# datasetname
+# numdims
+# dims1
+# dims2
+# ...
+# dimsn
+# READ/WRITE
+# number of read/writes
+# Overlap flag
+# --------------------------------------
+efffile.h5
+D1
+2
+16
+16
+WRITE
+10
+0 \ No newline at end of file
diff --git a/benchmark/FFbench/test_server.c b/benchmark/FFbench/test_server.c
new file mode 100644
index 0000000..ee28de4
--- /dev/null
+++ b/benchmark/FFbench/test_server.c
@@ -0,0 +1,50 @@
+/*
+ * test_server.c: Server side of Milestone 3.3 Asynchronous I/O and initial
+ * IOD VOL plugin demonstration.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <string.h>
+#include "mpi.h"
+#include "hdf5.h"
+
+int main(int argc, char **argv) {
+ int my_size, my_rank;
+ int provided;
+
+ MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided);
+ if(MPI_THREAD_MULTIPLE != provided) {
+ printf("MPI does not have MPI_THREAD_MULTIPLE support\n");
+ exit(1);
+ }
+
+ MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
+ MPI_Comm_size(MPI_COMM_WORLD, &my_size);
+ printf("Number of server processes = %d, my rank is %d\n", my_size, my_rank);
+
+ H5open();
+ /* This call initiliazes the FS for the server processes (create metadata and
+ bulk data handles). It also registers with the Function shipper the
+ HDF5 VOL server routines that will be executed when the clients ship the VOL
+ routines. Then it executes a loop to receive requests from clients that map
+ to one of the registered callbacks.
+
+ Whenever a request is received, the corresponding callback is called which
+ inserts the operation into the AXE (the Asynchronous eXecution Engine) and
+ returns to receive another request. The AXE schedules that operation to
+ execute by assigning a thread to it. After the operation is complete, the
+ result is returned to the client through the function shipper complete call.
+
+ Finally, when all clients send a terminate call, the function shipper interface
+ is finalized the operation returns. */
+ H5VLiod_start_handler(MPI_COMM_WORLD, MPI_INFO_NULL);
+ H5close();
+ fflush(stderr);
+ MPI_Finalize();
+ fflush(stderr);
+
+ return 0;
+}
+
diff --git a/benchmark/iodrc b/benchmark/iodrc
new file mode 100644
index 0000000..f459762
--- /dev/null
+++ b/benchmark/iodrc
@@ -0,0 +1,6 @@
+mlog_defmask DEBUG
+#mlog_stderr 1
+mlog_syslog 1
+mlog_msgbuf_size 409600
+mlog_file /scr/vish/FF/iod_log
+#mlog_file /tmp/iod_debug.log
diff --git a/testff/compactor_tests/parallel_write.c b/testff/compactor_tests/parallel_write.c
index e996388..4824132 100644
--- a/testff/compactor_tests/parallel_write.c
+++ b/testff/compactor_tests/parallel_write.c
@@ -18,8 +18,7 @@ int main (int argc, char **argv){
hid_t dataspaceID, dataspace2;
hid_t dset_id;
hid_t fapl_id, dxpl_id;
-
- const unsigned int nelem = 60;
+
int *data = NULL;
unsigned int i = 0;
hsize_t dimsf[2];