Skip to content

Commit 76f8076

Browse files
committed
enable hint nc_in_place_swap to further disable internal buffering
1 parent ae1fd1f commit 76f8076

1 file changed

Lines changed: 13 additions & 16 deletions

File tree

examples/C/nonblocking_write.c

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
#include <mpi.h>
4141
#include <pnetcdf.h>
4242

43-
#define NTIMES 4
43+
#define NTIMES 2
4444
#define NDIMS 3
4545
#define SCA_NVARS 5
4646
#define FIX_NVARS 5
@@ -168,7 +168,7 @@ int main(int argc, char **argv)
168168

169169
MPI_Dims_create(nprocs, NDIMS, psizes);
170170
if (rank == 0 && verbose && debug)
171-
printf("Process DIMS psizes=%2lld %2lld %2lld\n",
171+
printf("Process DIMS psizes=%2d %2d %2d\n",
172172
psizes[0],psizes[1],psizes[2]);
173173

174174
starts[0] = 0;
@@ -199,21 +199,19 @@ int main(int argc, char **argv)
199199

200200
sca_buf = (int*) malloc(total_nelems * sizeof(int));
201201

202-
fix_buf[0] = sca_buf + SCA_NVARS;
203-
for (i=1; i<FIX_NVARS; i++)
204-
fix_buf[i] = fix_buf[i-1] + nelems;
202+
for (i=0; i<FIX_NVARS; i++)
203+
fix_buf[i] = sca_buf + SCA_NVARS + nelems * i;
205204

206-
rec_buf[0] = fix_buf[FIX_NVARS-1] + nelems;
207-
for (i=1; i<REC_NVARS; i++)
208-
rec_buf[i] = rec_buf[i-1] + nelems;
205+
for (i=0; i<REC_NVARS; i++)
206+
rec_buf[i] = sca_buf + SCA_NVARS + FIX_NVARS * nelems + nelems * i;
209207
}
210208
else {
211-
/* allocate individual buffers separately */
212-
sca_buf = (int*) malloc(SCA_NVARS * sizeof(int));
209+
/* allocate individual buffers separately +1 ensure non-contiguity*/
210+
sca_buf = (int*) malloc((SCA_NVARS+1) * sizeof(int));
213211
for (i=0; i<FIX_NVARS; i++)
214-
fix_buf[i] = (int *) malloc(nelems * sizeof(int));
212+
fix_buf[i] = (int *) malloc((nelems+1) * sizeof(int));
215213
for (i=0; i<REC_NVARS; i++)
216-
rec_buf[i] = (int *) malloc(nelems * sizeof(int));
214+
rec_buf[i] = (int *) malloc((nelems+1) * sizeof(int));
217215
}
218216

219217
/* initialize buffer contents */
@@ -233,10 +231,9 @@ int main(int argc, char **argv)
233231
MPI_Info_create(&info);
234232
MPI_Info_set(info, "nc_var_align_size", "1");
235233

236-
/* Optional: disable PnetCDF internal buffering for noncontiguous user
237-
* buffers */
238-
if (!use_contig_buf)
239-
MPI_Info_set(info, "nc_ibuf_size", "0");
234+
/* disable PnetCDF internal buffering */
235+
MPI_Info_set(info, "nc_ibuf_size", "0");
236+
MPI_Info_set(info, "nc_in_place_swap", "enable");
240237

241238
/* create the file */
242239
err = ncmpi_create(MPI_COMM_WORLD, filename, NC_CLOBBER|NC_64BIT_DATA,

0 commit comments

Comments
 (0)