diff --git a/swiftmpirdmastepsim.c b/swiftmpirdmastepsim.c index 1fe868d3f187bbe4f04cebd5c58c129f2bae212f..13eabdae4ff986d63f3ad020eb7000a6f8efb02a 100644 --- a/swiftmpirdmastepsim.c +++ b/swiftmpirdmastepsim.c @@ -82,9 +82,6 @@ static MPI_Comm subtypeMPI_comms[task_subtype_count]; static MPI_Win mpi_window[task_subtype_count]; static BLOCKTYPE *mpi_ptr[task_subtype_count]; -/* Size of a board for a rank. */ -static size_t board_size = 0; - /* The local send queue. */ static struct mpiuse_log_entry **volatile send_queue; static int volatile nr_send = 0; @@ -153,7 +150,7 @@ static int datacheck_test(size_t size, void *data) { */ static void *send_thread(void *arg) { - message("%d: send thread starts", *((int *)arg)); + message("%d: send thread starts with %d messages", *((int *)arg), nr_send); ticks starttics = getticks(); for (int k = 0; k < nr_send; k++) { @@ -216,8 +213,6 @@ static void *send_thread(void *arg) { while (flag == 0) { MPI_Test(&request, &flag, MPI_STATUS_IGNORE); } - //message("waiting for unlock on %d/%d (%d)", log->otherrank, log->subtype, - // newval[0]); } message("sent and received... %d/%d/%d", k, nr_send, ((char *)log->data)[0]); @@ -252,27 +247,16 @@ static void *recv_thread(void *arg) { while (todo_recv > 0) { for (int n = 0; n < nr_ranks; n++) { if (todo_recv <= 0) break; - if (n == myrank) continue; + for (int j = 0; j < task_subtype_count; j++) { if (todo_recv <= 0) break; MPI_Win_flush_all(mpi_window[j]); // XXX emergency measure BLOCKTYPE lockval = mpi_ptr[j][n * MESSAGE_SIZE]; - message("lockval check %d/%d at %zd: lockval %zd", n, j, - n * MESSAGE_SIZE, lockval); - for (BLOCKTYPE kk = n * MESSAGE_SIZE; kk < (n+1) * MESSAGE_SIZE; kk++) { - if (mpi_ptr[j][kk] != 0) { - message("non-zero %zd at %zd", mpi_ptr[j][kk], kk); - } - } - if (lockval == UNLOCKED) { - message("unlock message %d/%d at %zd: lockval %zd, possibles: %d", n, j, - n * MESSAGE_SIZE, lockval, todo_recv); - /* We have a message waiting to be handled, find the log. */ int found = 0; for (int k = 0; k < nr_recv; k++) { @@ -300,8 +284,6 @@ static void *recv_thread(void *arg) { mpi_ptr[j][n * MESSAGE_SIZE] = LOCKED; break; - } else { - message("%d miss: %d/%d/%d", k, log->otherrank, log->subtype, log->done); } } if (!found) { @@ -318,9 +300,8 @@ static void *recv_thread(void *arg) { } } - if (verbose) - message("took %.3f %s.", clocks_from_ticks(getticks() - starttics), - clocks_getunit()); + message("took %.3f %s.", clocks_from_ticks(getticks() - starttics), + clocks_getunit()); /* Thread exits. */ return NULL; @@ -379,7 +360,8 @@ static size_t pick_logs() { qsort(recv_queue, nr_recv, sizeof(struct mpiuse_log_entry *), cmp_logs); qsort(send_queue, nr_send, sizeof(struct mpiuse_log_entry *), cmp_logs); - if (verbose) message("maxsize = %zd", maxsize); + if (verbose) message("maxsize = %zd, nr_send = %d, nr_recv = %d", + maxsize, nr_send, nr_recv); return maxsize; }