[PVFS2-CVS]
commit by pcarns in pvfs2/test/io/bmi: driver-fs-read.c module.mk.in
CVS commit program
cvs at parl.clemson.edu
Mon Jan 10 09:48:36 EST 2005
Update of /projects/cvsroot/pvfs2/test/io/bmi
In directory parlweb:/tmp/cvs-serv27820/io/bmi
Modified Files:
module.mk.in
Added Files:
driver-fs-read.c
Log Message:
checking in stub for a new and improved bmi benchmark, for now just has
startup and statistics code from one of the other benchmarks
--- /dev/null 2003-01-30 05:24:37.000000000 -0500
+++ driver-fs-read.c 2005-01-10 09:48:35.000000000 -0500
@@ -0,0 +1,164 @@
+/*
+ * (C) 2001 Clemson University and The University of Chicago
+ *
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include "gossip.h"
+#include <mpi.h>
+#include "bmi.h"
+#include "bench-initialize.h"
+#include "bench-args.h"
+#include "bench-mem.h"
+
+int main(
+ int argc,
+ char *argv[])
+{
+ int ret = -1;
+ int world_rank = 0;
+ MPI_Comm comm;
+ PVFS_BMI_addr_t *bmi_peer_array;
+ int *mpi_peer_array;
+ int num_clients;
+ struct bench_options opts;
+ int im_a_server = 0;
+ int num_messages = 0;
+ double bmi_time, mpi_time;
+ double max_bmi_time, max_mpi_time;
+ double min_bmi_time, min_mpi_time;
+ double sum_bmi_time, sum_mpi_time;
+ double sq_bmi_time, sq_mpi_time;
+ double sumsq_bmi_time, sumsq_mpi_time;
+ double var_bmi_time, var_mpi_time;
+ double stddev_bmi_time, stddev_mpi_time;
+ double agg_bmi_bw, agg_mpi_bw;
+ double ave_bmi_time, ave_mpi_time;
+ int total_data_xfer = 0;
+ bmi_context_id context = -1;
+
+ /* start up benchmark environment */
+ ret = bench_init(&opts, argc, argv, &num_clients, &world_rank, &comm,
+ &bmi_peer_array, &mpi_peer_array, &context);
+ if (ret < 0)
+ {
+ fprintf(stderr, "bench_init() failure.\n");
+ return (-1);
+ }
+
+ /* note whether we are a "server" or not */
+ if (world_rank < opts.num_servers)
+ {
+ im_a_server = 1;
+ }
+
+ num_messages = opts.total_len / opts.message_len;
+
+
+ MPI_Barrier(MPI_COMM_WORLD);
+
+ /* reduce seperately among clients and servers to get min
+ * times and max times
+ */
+ MPI_Allreduce(&mpi_time, &max_mpi_time, 1, MPI_DOUBLE, MPI_MAX, comm);
+ MPI_Allreduce(&mpi_time, &min_mpi_time, 1, MPI_DOUBLE, MPI_MIN, comm);
+ MPI_Allreduce(&mpi_time, &sum_mpi_time, 1, MPI_DOUBLE, MPI_SUM, comm);
+ MPI_Allreduce(&bmi_time, &max_bmi_time, 1, MPI_DOUBLE, MPI_MAX, comm);
+ MPI_Allreduce(&bmi_time, &min_bmi_time, 1, MPI_DOUBLE, MPI_MIN, comm);
+ MPI_Allreduce(&bmi_time, &sum_bmi_time, 1, MPI_DOUBLE, MPI_SUM, comm);
+ sq_bmi_time = bmi_time * bmi_time;
+ sq_mpi_time = mpi_time * mpi_time;
+ MPI_Allreduce(&sq_bmi_time, &sumsq_bmi_time, 1, MPI_DOUBLE, MPI_SUM, comm);
+ MPI_Allreduce(&sq_mpi_time, &sumsq_mpi_time, 1, MPI_DOUBLE, MPI_SUM, comm);
+
+ /* exactly one "client" and one "server" compute and print
+ * statistics
+ */
+ if (world_rank == 0)
+ {
+ bench_args_dump(&opts);
+
+ total_data_xfer = opts.num_servers * num_clients * num_messages *
+ opts.message_len;
+ if (opts.num_servers > 1)
+ {
+ var_bmi_time = sumsq_bmi_time -
+ sum_bmi_time * sum_bmi_time / (double) (opts.num_servers);
+ var_mpi_time = sumsq_mpi_time -
+ sum_mpi_time * sum_mpi_time / (double) (opts.num_servers);
+ }
+ else
+ {
+ var_bmi_time = 0;
+ var_mpi_time = 0;
+ }
+ ave_bmi_time = sum_bmi_time / opts.num_servers;
+ ave_mpi_time = sum_mpi_time / opts.num_servers;
+ stddev_bmi_time = sqrt(var_bmi_time);
+ stddev_mpi_time = sqrt(var_mpi_time);
+ agg_bmi_bw = (double) total_data_xfer / max_bmi_time;
+ agg_mpi_bw = (double) total_data_xfer / max_mpi_time;
+
+ printf
+ ("%d %d %f %f %f %f %f (msg_len,servers,min,max,ave,stddev,agg_MB/s) bmi server\n",
+ opts.message_len, opts.num_servers, min_bmi_time, max_bmi_time,
+ ave_bmi_time, stddev_bmi_time, agg_bmi_bw / (1024 * 1024));
+ printf
+ ("%d %d %f %f %f %f %f (msg_len,servers,min,max,ave,stddev,agg_MB/s) mpi server\n",
+ opts.message_len, opts.num_servers, min_mpi_time, max_mpi_time,
+ ave_mpi_time, stddev_mpi_time, agg_mpi_bw / (1024 * 1024));
+ }
+
+ if (world_rank == opts.num_servers)
+ {
+ total_data_xfer = opts.num_servers * num_clients * num_messages *
+ opts.message_len;
+
+ if (num_clients > 1)
+ {
+ var_bmi_time = sumsq_bmi_time -
+ sum_bmi_time * sum_bmi_time / (double) (num_clients);
+ var_mpi_time = sumsq_mpi_time -
+ sum_mpi_time * sum_mpi_time / (double) (num_clients);
+ }
+ else
+ {
+ var_bmi_time = 0;
+ var_mpi_time = 0;
+ }
+ stddev_bmi_time = sqrt(var_bmi_time);
+ stddev_mpi_time = sqrt(var_mpi_time);
+ agg_bmi_bw = (double) total_data_xfer / max_bmi_time;
+ agg_mpi_bw = (double) total_data_xfer / max_mpi_time;
+ ave_bmi_time = sum_bmi_time / num_clients;
+ ave_mpi_time = sum_mpi_time / num_clients;
+
+ printf
+ ("%d %d %f %f %f %f %f (msg_len,clients,min,max,ave,stddev,agg_MB/s) bmi client\n",
+ opts.message_len, num_clients, min_bmi_time, max_bmi_time,
+ ave_bmi_time, stddev_bmi_time, agg_bmi_bw / (1024 * 1024));
+ printf
+ ("%d %d %f %f %f %f %f (msg_len,clients,min,max,ave,stddev,agg_MB/s) mpi client\n",
+ opts.message_len, num_clients, min_mpi_time, max_mpi_time,
+ ave_mpi_time, stddev_mpi_time, agg_mpi_bw / (1024 * 1024));
+ }
+
+ /* shutdown interfaces */
+ BMI_close_context(context);
+ BMI_finalize();
+ MPI_Finalize();
+ return 0;
+}
+
+/*
+ * Local variables:
+ * c-indent-level: 4
+ * c-basic-offset: 4
+ * End:
+ *
+ * vim: ts=8 sts=4 sw=4 expandtab
+ */
Index: module.mk.in
===================================================================
RCS file: /projects/cvsroot/pvfs2/test/io/bmi/module.mk.in,v
diff -p -u -r1.11 -r1.12
--- module.mk.in 3 Dec 2004 15:13:32 -0000 1.11
+++ module.mk.in 10 Jan 2005 14:48:35 -0000 1.12
@@ -22,7 +22,8 @@ LOCAL_MPIMISCSRC := \
LOCAL_MPITESTSRC += \
$(DIR)/driver-latency.c \
$(DIR)/driver-bw-multi.c \
- $(DIR)/driver-simple.c
+ $(DIR)/driver-simple.c \
+ $(DIR)/driver-fs-read.c
MPIMISCSRC += $(LOCAL_MPIMISCSRC)
More information about the PVFS2-CVS
mailing list