void PrintStats(M3EcSystemShm * sys) { int i,j; for(i=0;i<sys->slaves_responding;i++) { if((sys->slave[i].active)&&(time_last[i]!=TIMESTAT_INIT)) { printf("\n\nTIMESTATS for Slave %d\n", i); printf("Worst jitter between steps (ms) : %f\n",NS_TO_MS(time_to_step_worst[i])); printf("Best jitter between steps (ms) : %f\n",NS_TO_MS(time_to_step_best[i])); printf("Avg jitter mag between steps (ms) : %f\n",NS_TO_MS(time_to_step_sum[i]/cntr_sum[i])); printf("\nWorst delay between master (ms) : %f\n",NS_TO_MS(time_to_mstr_worst[i])); printf("Best delay between master (ms) : %f\n",NS_TO_MS(time_to_mstr_best[i])); printf("Avg delay between master (ms) : %f\n",NS_TO_MS(time_to_mstr_sum[i]/cntr_sum[i])); printf("Hickups (delay > %fms) : %d\n",NS_TO_MS(HICKUP_THRESHOLD),hickups[i]); for (j=0;j<sys->slaves_responding;j++) { if((sys->slave[j].active)&&(time_last[j]!=TIMESTAT_INIT)&&(i!=j)) { printf("\nJitter between slaves %d and %d\n",i,j); printf("Worst jitter between slaves (ms) : %f\n",NS_TO_MS(time_slaves_worst[i][j])); printf("Best jitter between slaves (ms) : %f\n",NS_TO_MS(time_slaves_best[i][j])); printf("Avg jitter mag between slaves (ms) : %f\n",NS_TO_MS(time_slaves_sum[i][j]/cntr_slaves_sum[i][j])); } } } } return; }
static void print_statistics(int force) { if (force || IS_MPI_MASTER()) { int i; pthread_mutex_lock(&stats_lock); for (i = 0; i < kernel_elt_count; i++) { struct ld_kernel_s *ldKernel = &kernel_map[i]; if (ldKernel->exec_counter == 0) { continue; } info("Kernel %s:\n", ldKernel->name); info("\t- was executed %d times\n", ldKernel->exec_counter); unsigned long avg_ns = ldKernel->exec_span_ns / ldKernel->exec_counter; info("\t- it took %"PRId64"ms (%"PRId64"ns).\n", NS_TO_MS(ldKernel->exec_span_ns), ldKernel->exec_span_ns); info("\t- average time was %"PRId64"ms (%"PRId64"ns).\n", NS_TO_MS(avg_ns), avg_ns); } info("---------------\n"); pthread_mutex_unlock(&stats_lock); } }