@@ -205,7 +205,7 @@ static void usage (char *argv0) {
205205/*----< main() >-------------------------------------------------------------*/
206206int main (int argc , char * * argv ) {
207207 int i , err , nrecs = 1 , ffreq ;
208- double timing [3 ], max_t [3 ];
208+ double timing [5 ], max_t [5 ];
209209 e3sm_io_config cfg ;
210210 e3sm_io_decom decom ;
211211
@@ -561,8 +561,9 @@ int main (int argc, char **argv) {
561561 PRINT_MSG (1 , "Input data file/folder name = %s\n" , cfg .in_path );
562562 PRINT_MSG (1 , "Output data file/folder name = %s\n" , cfg .out_path );
563563
564+ timing [1 ] = MPI_Wtime () - timing [0 ];
564565 MPI_Barrier (MPI_COMM_WORLD );
565- timing [1 ] = MPI_Wtime ();
566+ timing [2 ] = MPI_Wtime ();
566567
567568 /* read request information from decomposition file */
568569 err = read_decomp (& cfg , & decom );
@@ -581,9 +582,9 @@ int main (int argc, char **argv) {
581582 else
582583 cfg .run_case = unknown ;
583584
584- timing [1 ] = MPI_Wtime () - timing [1 ];
585+ timing [2 ] = MPI_Wtime () - timing [2 ];
585586 MPI_Barrier (MPI_COMM_WORLD );
586- timing [2 ] = MPI_Wtime ();
587+ timing [3 ] = MPI_Wtime ();
587588
588589 /* set MPI-IO and PnetCDF hints */
589590 err = MPI_Info_create (& (cfg .info ));
@@ -595,7 +596,9 @@ int main (int argc, char **argv) {
595596 err = e3sm_io_core (& cfg , & decom );
596597 CHECK_ERR
597598
598- timing [2 ] = MPI_Wtime () - timing [2 ];
599+ timing [3 ] = MPI_Wtime () - timing [3 ];
600+ MPI_Barrier (MPI_COMM_WORLD );
601+ timing [4 ] = MPI_Wtime ();
599602
600603 /* report timing breakdowns */
601604 if (cfg .rd ) {
@@ -605,15 +608,6 @@ int main (int argc, char **argv) {
605608 report_timing_WR (& cfg , & decom );
606609 }
607610
608- timing [0 ] = MPI_Wtime () - timing [0 ];
609- MPI_Reduce (timing , max_t , 3 , MPI_DOUBLE , MPI_MAX , 0 , MPI_COMM_WORLD );
610- if (cfg .rank == 0 ) {
611- printf ("read_decomp=%.2f e3sm_io_core=%.2f MPI init-to-finalize=%.2f\n" ,
612- max_t [1 ],max_t [2 ],max_t [0 ]);
613- printf ("-----------------------------------------------------------\n" );
614- printf ("\n\n" );
615- }
616-
617611#ifdef E3SM_IO_PROFILING
618612 if (cfg .profiling ) e3sm_io_print_profile (& cfg );
619613#else
@@ -640,6 +634,16 @@ int main (int argc, char **argv) {
640634 }
641635 }
642636
637+ timing [4 ] = MPI_Wtime () - timing [4 ];
638+ timing [0 ] = MPI_Wtime () - timing [0 ];
639+ MPI_Reduce (timing , max_t , 5 , MPI_DOUBLE , MPI_MAX , 0 , MPI_COMM_WORLD );
640+ if (cfg .rank == 0 ) {
641+ printf ("init=%.2f read_decomp=%.2f e3sm_io_core=%.2f final=%.2f end-to-end=%.2f\n" ,
642+ max_t [1 ],max_t [2 ],max_t [3 ],max_t [4 ],max_t [0 ]);
643+ printf ("-----------------------------------------------------------\n" );
644+ printf ("\n\n" );
645+ }
646+
643647 MPI_Finalize ();
644648
645649 return (err < 0 ) ? 1 : 0 ;
0 commit comments