Skip to content

Commit e5b342f

Browse files
committed
fix starts and counts
1 parent 529bb98 commit e5b342f

1 file changed

Lines changed: 22 additions & 13 deletions

File tree

examples/C/nonblocking_write.c

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ int main(int argc, char **argv)
124124
{
125125
extern int optind;
126126
extern char *optarg;
127-
int i, j, k, err, nerrs=0, use_bput=0;
127+
int i, j, k, err, nerrs=0, debug=0, use_bput=0;
128128
int nprocs, len=0, bufsize, rank;
129129
int sca_buf[SCA_NVARS], *fix_buf[FIX_NVARS], *rec_buf[REC_NVARS];
130130
int gsizes[NDIMS], psizes[NDIMS];
@@ -164,28 +164,37 @@ int main(int argc, char **argv)
164164
for (i=0; i<NDIMS; i++) psizes[i] = 0;
165165

166166
MPI_Dims_create(nprocs, NDIMS, psizes);
167+
if (rank == 0 && verbose && debug)
168+
printf("Process DIMS psizes=%2lld %2lld %2lld\n",
169+
psizes[0],psizes[1],psizes[2]);
170+
167171
starts[0] = 0;
168-
starts[1] = rank % psizes[0];
169-
starts[2] = (rank / psizes[1]) % psizes[1];
170-
starts[3] = (rank / (psizes[0] * psizes[1])) % psizes[2];
172+
starts[1] = (rank / (psizes[1] * psizes[2])) % psizes[0];
173+
starts[2] = (rank / psizes[2]) % psizes[1];
174+
starts[3] = rank % psizes[2];
171175

172176
counts[0] = 1;
173177
bufsize = 1;
174178
for (i=0; i<NDIMS; i++) {
175-
gsizes[i] = len * psizes[i];
176-
starts[i] *= len;
177-
bufsize *= len;
178-
counts[i+1] = len;
179+
gsizes[i] = len * psizes[i];
180+
bufsize *= len;
181+
starts[i+1] *= len;
182+
counts[i+1] = len;
179183
}
180184

185+
if (verbose && debug)
186+
printf("%2d: starts=%2lld %2lld %2lld %2lld counts=%2lld %2lld %2lld %2lld\n",
187+
rank, starts[0], starts[1], starts[2], starts[3],
188+
counts[0], counts[1], counts[2], counts[3]);
189+
181190
/* allocate buffer and initialize with some non-zero numbers */
182191
for (i=0; i<FIX_NVARS; i++) {
183192
fix_buf[i] = (int *) malloc(bufsize * sizeof(int));
184-
for (j=0; j<bufsize; j++) fix_buf[i][j] = rank * i + 123 + j;
193+
for (j=0; j<bufsize; j++) fix_buf[i][j] = rank;
185194
}
186195
for (i=0; i<REC_NVARS; i++) {
187196
rec_buf[i] = (int *) malloc(bufsize * sizeof(int));
188-
for (j=0; j<bufsize; j++) rec_buf[i][j] = rank * i + 123 + j;
197+
for (j=0; j<bufsize; j++) rec_buf[i][j] = rank;
189198
}
190199
for (j=0; j<SCA_NVARS; j++) sca_buf[j] = rank + j;
191200

@@ -216,7 +225,7 @@ int main(int argc, char **argv)
216225
err = ncmpi_def_dim(ncid, "time", NC_UNLIMITED, &dimids[0]);
217226
ERR
218227
for (i=0; i<NDIMS; i++) {
219-
sprintf(str, "%c", 'x'+i);
228+
sprintf(str, "%c", 'z'-i);
220229
err = ncmpi_def_dim(ncid, str, gsizes[i], &dimids[i+1]);
221230
ERR
222231
}
@@ -362,9 +371,9 @@ int main(int argc, char **argv)
362371
if (rank == 0 && verbose) {
363372
printf("\n");
364373
if (use_bput)
365-
printf("Using PnetCDF nonblocking bput APIs\n");
374+
printf("Using PnetCDF nonblocking APIs: bput\n");
366375
else
367-
printf("Using PnetCDF nonblocking iput APIs\n");
376+
printf("Using PnetCDF nonblocking APIs: iput\n");
368377
printf("Total amount writes (include header) = %lld bytes\n", sum_write_size);
369378
printf("Total amount writes reported by pnetcdf (include header) = %lld bytes\n", sum_put_size);
370379
printf("\n");

0 commit comments

Comments
 (0)