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