From 651b851fdd2a36958e09a66cb2877c66cf160a5e Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Tue, 18 Jul 2023 10:19:42 -0400 Subject: better warrior placement, including handling the case where they don't fit --- tabulator-mpi/main.cpp | 9 +++++++++ tabulator-mpi/worker.cpp | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'tabulator-mpi') diff --git a/tabulator-mpi/main.cpp b/tabulator-mpi/main.cpp index e6e1a27..cd17044 100644 --- a/tabulator-mpi/main.cpp +++ b/tabulator-mpi/main.cpp @@ -42,6 +42,15 @@ int main(int argc, char **argv) { for (int i = 0; i < argc - 1; ++i) warriors[i] = load_warrior(argv[i + 1]); + for (int i = 0; i < argc - 1; ++i) + for (int j = i + 1; j < argc - 1; ++j) { + const lib94::warrior *wbuf[2] = {warriors[i], warriors[j]}; + if (!lib94::init_round(wbuf, 2)) { + fprintf(stderr, "warriors do not fit in core\n"); + return 1; + } + } + if (comm_rank == 0) head_main(comm_size, argc - 1, warriors); else diff --git a/tabulator-mpi/worker.cpp b/tabulator-mpi/worker.cpp index 511a27a..486d107 100644 --- a/tabulator-mpi/worker.cpp +++ b/tabulator-mpi/worker.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -15,7 +16,7 @@ static void do_round(const lib94::warrior *w1, const lib94::warrior *w2, int &w1 lib94::clear_core(background); - lib94::init_round(ws, 2); + assert(lib94::init_round(ws, 2)); for (int i = 0; i < STEPS_TO_TIE; ++i) { const lib94::warrior *result = lib94::single_step(); -- cgit v1.2.3