18 #include "partest_util.h" 20 int barrier_after_start(MPI_Comm comm)
26 int barrier_after_malloc(MPI_Comm comm)
32 int barrier_after_open(MPI_Comm comm)
38 int barrier_after_write(MPI_Comm comm)
44 int barrier_after_read(MPI_Comm comm)
50 int barrier_after_close(MPI_Comm comm)
56 int barrier_before_unlink(MPI_Comm comm)
62 int barrier_after_unlink(MPI_Comm comm)
68 int write_timings (
char *set,
int method,
double *timings, sion_int64 *stats,
71 char cbuffer1[2*MAXCHARLEN];
72 char cbuffer2[2*MAXCHARLEN];
73 char cbuffer3[2*MAXCHARLEN];
74 char cbuffer4[2*MAXCHARLEN];
76 if(method == TIMINGS_METHOD_WRITE) {
78 "timings[%06d] T_STAT %s %s b=%10.2f MiB t=%10.6fs #chunks=%ld bw=%10.4f MB/s (%10.4f MiB/s) ion=%d nf=%d\n",
79 communicators->all_rank,set,
"WRITE",
80 1.0 * stats[STATS_BYTES_WR_WROTE] / toMiB,
81 timings[TIMINGS_WR_TOTAL],
82 (
long) stats[STATS_BYTES_WR_NUM_CHUNKS],
83 1.0 * stats[STATS_BYTES_WR_WROTE] / toMB / timings[TIMINGS_WR_TOTAL],
84 1.0 * stats[STATS_BYTES_WR_WROTE] / toMiB / timings[TIMINGS_WR_TOTAL],
85 communicators->ionode_number,
89 "timings[%06d] T_PHASE %s %s create=%.5fs, create_cls=%.5fs, open=%.5fs, write=%.5fs, close=%.5fs, tlog=%.4fs\n",
90 communicators->all_rank,set,
"WRITE",
91 timings[TIMINGS_WR_CREATE],timings[TIMINGS_WR_CREATE_CLOSE],timings[TIMINGS_WR_OPEN],timings[TIMINGS_WR_WRITE],timings[TIMINGS_WR_CLOSE],timings[TIMINGS_MSGS]);
94 "timings[%06d] T_FILE_BARRIER %s %s open=%.4fs, write=%.4fs, close=%.4fs\n",
95 communicators->all_rank,set,
"WRITE",
96 timings[TIMINGS_WR_OPEN_BARR_FILE],timings[TIMINGS_WR_WRITE_BARR_FILE],timings[TIMINGS_WR_CLOSE_BARR_FILE]);
99 "timings[%06d] T_GLOBAL_BARRIER %s %s create=%.4fs, create_cls=%.4fs, open=%.4fs, write=%.4fs, close=%.4fs\n",
100 communicators->all_rank,set,
"WRITE",
101 timings[TIMINGS_WR_CREATE_BARR_OPEN],timings[TIMINGS_WR_CREATE_BARR_CLOSE],timings[TIMINGS_WR_OPEN_BARR_FILE],timings[TIMINGS_WR_WRITE_BARR_FILE],timings[TIMINGS_WR_CLOSE_BARR_FILE]);
104 "timings[%06d] T_STAT %s %s b=%10.2f MiB t=%10.6fs #chunks=%ld bw=%10.4f MB/s (%10.4f MiB/s) ion=%d nf=%d\n",
105 communicators->all_rank,set,
"READ",
106 1.0 * stats[STATS_BYTES_RD_READ] / toMiB,
107 timings[TIMINGS_RD_TOTAL],
108 (
long) stats[STATS_BYTES_RD_NUM_CHUNKS],
109 1.0 * stats[STATS_BYTES_RD_READ] / toMB / timings[TIMINGS_RD_TOTAL],
110 1.0 * stats[STATS_BYTES_RD_READ] / toMiB / timings[TIMINGS_RD_TOTAL],
111 communicators->ionode_number,
115 "timings[%06d] T_PHASE %s %s open=%.5fs, read=%.5fs, close=%.5fs, tlog=%.4fs\n",
116 communicators->all_rank,set,
"READ",
117 timings[TIMINGS_RD_OPEN],timings[TIMINGS_RD_READ],timings[TIMINGS_RD_CLOSE],timings[TIMINGS_MSGS]);
120 "timings[%06d] T_FILE_BARRIER %s %s open=%.4fs, read=%.4fs, close=%.4fs\n",
121 communicators->all_rank,set,
"READ",
122 timings[TIMINGS_RD_OPEN_BARR_FILE],timings[TIMINGS_RD_READ_BARR_FILE],timings[TIMINGS_RD_CLOSE_BARR_FILE]);
125 "timings[%06d] T_GLOBAL_BARRIER %s %s open=%.4fs, read=%.4fs, close=%.4fs\n",
126 communicators->all_rank,set,
"READ",
127 timings[TIMINGS_RD_OPEN_BARR_FILE],timings[TIMINGS_RD_READ_BARR_FILE],timings[TIMINGS_RD_CLOSE_BARR_FILE]);
131 collective_print_gather(cbuffer1, communicators->
work);
132 collective_print_gather(cbuffer2, communicators->
work);
133 collective_print_gather(cbuffer3, communicators->
work);
134 collective_print_gather(cbuffer4, communicators->
work);
136 fprintf(stderr,
"%s", cbuffer1);
137 fprintf(stderr,
"%s", cbuffer2);
138 fprintf(stderr,
"%s", cbuffer3);
139 fprintf(stderr,
"%s", cbuffer4);
145 int collective_print_gather(
char *cbuffer, MPI_Comm comm)
151 MPI_Comm_size(comm, &size);
152 MPI_Comm_rank(comm, &rank);
154 if(size*MAXCHARLEN > 2*1024*1024) {
155 return(collective_print(cbuffer,comm));
159 lbuffer = (
char *) malloc(MAXCHARLEN * size);
161 fprintf(stderr,
"could allocate buffer of size %d\n",MAXCHARLEN * size);
169 MPI_Gather(cbuffer, MAXCHARLEN, MPI_CHAR, lbuffer, MAXCHARLEN, MPI_CHAR, 0, comm);
173 for (p = 0; p < size; p++) {
174 fprintf(stderr,
"%s", lbuffer + p * MAXCHARLEN);
178 if(rank==0) free(lbuffer);
183 int collective_print(
char *cbuffer, MPI_Comm comm)
187 char lbuffer[MAXCHARLEN];
190 MPI_Comm_size(comm, &size);
191 MPI_Comm_rank(comm, &rank);
193 fprintf(stderr,
"%s", cbuffer);
195 for (p = 1; p < size; p++) {
197 MPI_Send(&dummy, 1, MPI_INT, p, WAKEUP, comm);
198 MPI_Recv(lbuffer, MAXCHARLEN, MPI_CHAR, p, COLPRINT, comm, &status);
199 if (strlen(lbuffer) > 0)
200 fprintf(stderr,
"%s", lbuffer);
207 MPI_Recv(&dummy, 1, MPI_INT, 0, WAKEUP, comm, &status);
208 MPI_Send(cbuffer, MAXCHARLEN, MPI_CHAR, 0, COLPRINT, comm);