00001
00002
00003
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "ad_bgl_tuning.h"
00023 #include "mpi.h"
00024
00025 #if !defined(PVFS2_SUPER_MAGIC)
00026 #define PVFS2_SUPER_MAGIC (0x20030528)
00027 #endif
00028
00029 int bglmpio_timing;
00030 int bglmpio_timing2;
00031 int bglmpio_comm;
00032 int bglmpio_tunegather;
00033 int bglmpio_tuneblocking;
00034 long bglocklessmpio_f_type;
00035
00036 double bglmpio_prof_cw [BGLMPIO_CIO_LAST];
00037 double bglmpio_prof_cr [BGLMPIO_CIO_LAST];
00038
00039
00083 void ad_bgl_get_env_vars() {
00084 char *x, *dummy;
00085
00086 bglmpio_comm = 0;
00087 x = getenv( "BGLMPIO_COMM" );
00088 if (x) bglmpio_comm = atoi(x);
00089 bglmpio_timing = 0;
00090 x = getenv( "BGLMPIO_TIMING" );
00091 if (x) bglmpio_timing = atoi(x);
00092 bglmpio_timing2 = 0;
00093 x = getenv( "BGLMPIO_TIMING2" );
00094 if (x) bglmpio_timing2 = atoi(x);
00095 bglmpio_tunegather = 1;
00096 x = getenv( "BGLMPIO_TUNEGATHER" );
00097 if (x) bglmpio_tunegather = atoi(x);
00098 bglmpio_tuneblocking = 1;
00099 x = getenv( "BGLMPIO_TUNEBLOCKING" );
00100 if (x) bglmpio_tuneblocking = atoi(x);
00101 bglocklessmpio_f_type = PVFS2_SUPER_MAGIC;
00102 x = getenv( "BGLOCKLESSMPIO_F_TYPE" );
00103 if (x) bglocklessmpio_f_type = strtol(x,&dummy,0);
00104 DBG_FPRINTF(stderr,"BGLOCKLESSMPIO_F_TYPE=%ld/%#lX\n",
00105 bglocklessmpio_f_type,bglocklessmpio_f_type);
00106 }
00107
00108
00109 void ad_bgl_wr_timing_report( int rw, ADIO_File fd, int myrank, int nprocs )
00110 {
00111 int i;
00112
00113 if (bglmpio_timing) {
00114
00115 double *bglmpio_prof_org = bglmpio_prof_cr;
00116 if (rw) bglmpio_prof_org = bglmpio_prof_cw;
00117
00118 double bglmpio_prof_avg[ BGLMPIO_CIO_LAST ];
00119 double bglmpio_prof_max[ BGLMPIO_CIO_LAST ];
00120
00121 MPI_Reduce( bglmpio_prof_org, bglmpio_prof_avg, BGLMPIO_CIO_LAST, MPI_DOUBLE, MPI_SUM, 0, fd->comm );
00122 MPI_Reduce( bglmpio_prof_org, bglmpio_prof_max, BGLMPIO_CIO_LAST, MPI_DOUBLE, MPI_MAX, 0, fd->comm );
00123
00124 if (myrank == 0) {
00125
00126 for (i=0; i<BGLMPIO_CIO_LAST; i++) bglmpio_prof_avg[i] /= nprocs;
00127
00128 if (bglmpio_timing2) {
00129 bglmpio_prof_avg[ BGLMPIO_CIO_B_POSI_RW ] = bglmpio_prof_avg[ BGLMPIO_CIO_DATA_SIZE ] * nprocs /
00130 bglmpio_prof_max[ BGLMPIO_CIO_T_POSI_RW ];
00131 bglmpio_prof_avg[ BGLMPIO_CIO_B_MPIO_RW ] = bglmpio_prof_avg[ BGLMPIO_CIO_DATA_SIZE ] * nprocs /
00132 bglmpio_prof_max[ BGLMPIO_CIO_T_MPIO_RW ];
00133 } else {
00134
00135 bglmpio_prof_avg[ BGLMPIO_CIO_B_POSI_RW ] = 0;
00136 bglmpio_prof_avg[ BGLMPIO_CIO_B_MPIO_RW ] = 0;
00137 }
00138
00139 bglmpio_prof_avg[ BGLMPIO_CIO_B_MPIO_CRW ] = bglmpio_prof_avg[ BGLMPIO_CIO_DATA_SIZE ] * nprocs /
00140 bglmpio_prof_max[ BGLMPIO_CIO_T_MPIO_CRW ];
00141
00142 printf("\tTIMING-1 %1s , ", (rw ? "W" : "R") );
00143 printf( "SZ: %12.4f , ", bglmpio_prof_avg[ BGLMPIO_CIO_DATA_SIZE ] * nprocs );
00144 printf( "SK-a: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_T_SEEK ] );
00145 printf( "SK-m: %10.3f , ", bglmpio_prof_max[ BGLMPIO_CIO_T_SEEK ] );
00146 printf( "LC-a: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_T_LCOMP ] );
00147 printf( "GA-m: %10.3f , ", bglmpio_prof_max[ BGLMPIO_CIO_T_GATHER ] );
00148 printf( "AN-a: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_T_PATANA ] );
00149 printf( "FD-a: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_T_FD_PART ] );
00150 printf( "MY-a: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_T_MYREQ ] );
00151 printf( "OT-m: %10.3f , ", bglmpio_prof_max[ BGLMPIO_CIO_T_OTHREQ ] );
00152 printf( "EX-m: %10.3f , ", bglmpio_prof_max[ BGLMPIO_CIO_T_DEXCH ] );
00153 printf("\tTIMING-2 %1s , ", (rw ? "W" : "R") );
00154 printf( "PXT-m: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_T_POSI_RW ] );
00155 printf( "MPT-m: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_T_MPIO_RW ] );
00156 printf("MPTC-m: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_T_MPIO_CRW ] );
00157 printf( "PXB: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_B_POSI_RW ] );
00158 printf( "MPB: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_B_MPIO_RW ] );
00159 printf( "MPBC: %10.3f , ", bglmpio_prof_avg[ BGLMPIO_CIO_B_MPIO_CRW ] );
00160 }
00161 }
00162
00163 }