From 6d133e062294a47804f95d712355b4a7947a01f5 Mon Sep 17 00:00:00 2001 From: Cotton Seed Date: Thu, 3 May 2012 15:49:26 -0400 Subject: [PATCH] Changes to get mpimain running. --- Makefile | 2 +- mpi_aux.h | 10 ++++++---- mpimain.cpp | 44 ++++++++++++++++++++++++++++---------------- 3 files changed, 35 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 1738feb..d187912 100644 --- a/Makefile +++ b/Makefile @@ -60,7 +60,7 @@ main: main.o $(COMMON_OBJS) $(CXX) $(LDFLAGS) -o main $^ $(LIBS) mpimain: mpimain.o mpi_aux.o $(COMMON_OBJS) - $(CXX) $(LDFLAGS) -o main $^ $(LIBS) + $(CXX) $(LDFLAGS) -o mpimain $^ $(LIBS) testlib: testlib.o $(COMMON_OBJS) $(CXX) $(LDFLAGS) -o testlib $^ diff --git a/mpi_aux.h b/mpi_aux.h index 8601f0e..ed80442 100644 --- a/mpi_aux.h +++ b/mpi_aux.h @@ -9,12 +9,14 @@ void send_int (int v, int dest); void send_string (const char *s, int dest); void send_string (const std::string &s, int dest); -void send_htw_knot (unsigned n, bool alternating, unsigned k, int dest); - int recv_int (int *src); -knot_diagram recv_knot (int *src); std::string recv_string (int *src); inline int recv_int () { return recv_int (0); } +inline std::string recv_string () { return recv_string (0); } + +#if 0 +void send_htw_knot (unsigned n, bool alternating, unsigned k, int dest); +knot_diagram recv_knot (int *src); knot_diagram recv_knot () { return recv_knot (0); } -std::string recv_string () { return recv_string (0); } +#endif diff --git a/mpimain.cpp b/mpimain.cpp index 3df4b29..0a7e317 100644 --- a/mpimain.cpp +++ b/mpimain.cpp @@ -1,4 +1,4 @@ - +s #include #include @@ -42,8 +42,6 @@ master () int ntasks = num_tasks (); - assert (work.size () > ntasks); - set active; for (int rank = 1; rank < ntasks && work.size () > 0; rank ++) @@ -51,9 +49,9 @@ master () send_int (CMD_DO, rank); knot_desc desc = work.pop (); - send_int ((int)desc.t); - send_int ((int)desc.i); - send_int ((int)desc.j); + send_int ((int)desc.t, rank); + send_int ((int)desc.i, rank); + send_int ((int)desc.j, rank); active.push (rank); } @@ -65,9 +63,9 @@ master () send_int (CMD_DO, rank); knot_desc desc = work.pop (); - send_int ((int)desc.t); - send_int ((int)desc.i); - send_int ((int)desc.j); + send_int ((int)desc.t, rank); + send_int ((int)desc.i, rank); + send_int ((int)desc.j, rank); } while (active.card () > 0) @@ -129,18 +127,20 @@ slave () desc.i = (knot_desc::table)recv_int (); desc.j = (knot_desc::table)recv_int (); + printf ("[% 2d] CMD_DO %s\n", rank, desc.name ().c_str ()); + map >, mod_map, mod_map > > knot_kh_sq; char buf[1000]; - if (desc.t == TORUS) + if (desc.t == knot_desc::TORUS) { sprintf (buf, "T.dat"); for (unsigned t = 3; t <= 16; t ++) // twists for (unsigned s = 2; s <= t; s ++) // strands { - if ((s - 1) * t > 16) + if ((s - 1) * t > 18) continue; desc.i = s; @@ -153,10 +153,22 @@ slave () { unsigned j0 = desc.j; - assert (desc.t == knot_desc::HTW || desc.t == knot_desc::MT); - sprintf (buf, "%c%d.dat", - desc.t == knot_desc::HTW ? 'K' : 'L', - j0); + switch (desc.t) + { + case knot_desc::ROLFSEN: + sprintf (buf, "%d_%d.dat", desc.i, j0); + break; + + case knot_desc::HTW: + sprintf (buf, "K%d_%d.dat", desc.i, j0); + break; + + case knot_desc::MT: + sprintf (buf, "L%d_%d.dat", desc.i, j0); + break; + + default: abort (); + } for (unsigned j = j0; j <= std::min (j0 + block_size - 1, @@ -171,7 +183,7 @@ slave () { writer w (buf); - write (w, kh_knot_map); + write (w, knot_kh_sq); } send_int (0, 0);