diff --git a/src/mdtest.c b/src/mdtest.c index 6415344..433ce7b 100644 --- a/src/mdtest.c +++ b/src/mdtest.c @@ -1284,6 +1284,11 @@ char const * mdtest_test_name(int i){ return NULL; } +int calc_allreduce_index(int iter, int rank, int op){ + int tableSize = MDTEST_LAST_NUM; + return iter * tableSize * o.size + rank * tableSize + op; +} + void summarize_results(int iterations, int print_time) { char const * access; int i, j, k; @@ -1304,6 +1309,20 @@ void summarize_results(int iterations, int print_time) { } } + if(o.print_all_proc && 0){ + // This code prints the result table for debugging + for (i = 0; i < tableSize; i++) { + for (j = 0; j < iterations; j++) { + access = mdtest_test_name(i); + if(access == NULL){ + continue; + } + curr = o.summary_table[j].rate[i]; + fprintf(out_logfile, "Rank %d Iter %d Test %s Rate: %e\n", rank, j, access, curr); + } + } + } + if (rank != 0) { return; } @@ -1327,7 +1346,6 @@ void summarize_results(int iterations, int print_time) { start = stop = 0; } - if(o.print_all_proc){ fprintf(out_logfile, "\nPer process result (%s):\n", print_time ? "time" : "rate"); for (j = 0; j < iterations; j++) { @@ -1339,7 +1357,7 @@ void summarize_results(int iterations, int print_time) { } fprintf(out_logfile, "Test %s", access); for (k=0; k < o.size; k++) { - curr = all[(k*tableSize*iterations) + (j*tableSize) + i]; + curr = all[calc_allreduce_index(j, k, i)]; fprintf(out_logfile, "%c%e", (k==0 ? ' ': ','), curr); } fprintf(out_logfile, "\n"); @@ -1355,8 +1373,7 @@ void summarize_results(int iterations, int print_time) { min = max = all[i]; for (k=0; k < o.size; k++) { for (j = 0; j < iterations; j++) { - curr = all[(k*tableSize*iterations) - + (j*tableSize) + i]; + curr = all[calc_allreduce_index(j, k, i)]; if (min > curr) { min = curr; } @@ -1385,7 +1402,6 @@ void summarize_results(int iterations, int print_time) { fflush(out_logfile); } sum = var = 0; - } // TODO generalize once more stonewall timers are supported @@ -1402,7 +1418,7 @@ void summarize_results(int iterations, int print_time) { fprintf(out_logfile, "%14s %14s %14.3f %14s\n", "NA", "NA", print_time ? stonewall_time : stonewall_items / stonewall_time, "NA"); } - /* calculate tree create/remove rates */ + /* calculate tree create/remove rates, applies only to Rank 0 */ for (i = 8; i < tableSize; i++) { min = max = all[i]; for (j = 0; j < iterations; j++) {