From 4f579cf5973130dbae5e4d962953bfe82830cef7 Mon Sep 17 00:00:00 2001 From: edwardhartnett Date: Fri, 6 Sep 2019 04:40:53 -0600 Subject: [PATCH 1/6] comments --- src/clib/pio.h | 3 +++ src/clib/pioc_support.c | 14 +++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/clib/pio.h b/src/clib/pio.h index 228cadf1098..7e2facc7721 100644 --- a/src/clib/pio.h +++ b/src/clib/pio.h @@ -134,6 +134,9 @@ typedef struct var_desc_t /** Holds the fill value of this var. */ void *fillvalue; + /** Number of dimensions for this var. */ + int ndims; + /** Non-zero if fill mode is turned on for this var. */ int use_fill; diff --git a/src/clib/pioc_support.c b/src/clib/pioc_support.c index 4252bd31241..b3ce86cc258 100644 --- a/src/clib/pioc_support.c +++ b/src/clib/pioc_support.c @@ -2205,7 +2205,8 @@ check_unlim_use(int ncid) /** * Internal function used when opening an existing file. This function * is called by PIOc_openfile_retry(). It learns some things about the - * metadata in that file. The results end up in the file_desc_t. + * metadata in that file. The results end up in the file_desc_t and + * var_desc_t structs for this file and the vars in it. * * @param file pointer to the file_desc_t for this file. * @param ncid the ncid assigned to the file when opened. @@ -2230,8 +2231,9 @@ check_unlim_use(int ncid) * @author Ed Hartnett */ int -inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, int **rec_var, - int **pio_type, int **pio_type_size, MPI_Datatype **mpi_type, int **mpi_type_size) +inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, + int **rec_var, int **pio_type, int **pio_type_size, + MPI_Datatype **mpi_type, int **mpi_type_size) { int nunlimdims = 0; /* The number of unlimited dimensions. */ int unlimdimid; @@ -2239,6 +2241,11 @@ inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, int **rec int mpierr; int ret; + /* Check inputs. */ + pioassert(rec_var && pio_type && pio_type_size && mpi_type && mpi_type_size, + "pointers must be provided", __FILE__, __LINE__); + + /* How many vars in the file? */ if (iotype == PIO_IOTYPE_PNETCDF) { #ifdef _PNETCDF @@ -2252,6 +2259,7 @@ inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, int **rec return pio_err(NULL, file, PIO_ENOMEM, __FILE__, __LINE__); } + /* Allocate storage for info about each var. */ if (*nvars) { if (!(*rec_var = malloc(*nvars * sizeof(int)))) From 204ec0fb966326bf3a96733920d2686ee28d0618 Mon Sep 17 00:00:00 2001 From: edwardhartnett Date: Fri, 6 Sep 2019 04:54:40 -0600 Subject: [PATCH 2/6] made inq_file_metadata a static function --- src/clib/pioc_support.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/clib/pioc_support.c b/src/clib/pioc_support.c index b3ce86cc258..99a4d5dcdfa 100644 --- a/src/clib/pioc_support.c +++ b/src/clib/pioc_support.c @@ -2225,12 +2225,14 @@ check_unlim_use(int ncid) * @param mpi_type_size gets an array (length nvars) of the size of * the MPI type for each var in the file. This array must be freed by * caller. + * @param ndim gets an array (length nvars) with the number of + * dimensions of each var. * * @return 0 for success, error code otherwise. * @ingroup PIO_openfile_c * @author Ed Hartnett */ -int +static int inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, int **rec_var, int **pio_type, int **pio_type_size, MPI_Datatype **mpi_type, int **mpi_type_size) From 3d941c9ac6861027810e127681a1a2ed23b6fb72 Mon Sep 17 00:00:00 2001 From: edwardhartnett Date: Fri, 6 Sep 2019 04:58:41 -0600 Subject: [PATCH 3/6] dealing with allocation for ndims array --- src/clib/pioc_support.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/clib/pioc_support.c b/src/clib/pioc_support.c index 99a4d5dcdfa..c89dfc4ce2c 100644 --- a/src/clib/pioc_support.c +++ b/src/clib/pioc_support.c @@ -2235,7 +2235,7 @@ check_unlim_use(int ncid) static int inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, int **rec_var, int **pio_type, int **pio_type_size, - MPI_Datatype **mpi_type, int **mpi_type_size) + MPI_Datatype **mpi_type, int **mpi_type_size, int **ndim) { int nunlimdims = 0; /* The number of unlimited dimensions. */ int unlimdimid; @@ -2274,6 +2274,8 @@ inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, return PIO_ENOMEM; if (!(*mpi_type_size = malloc(*nvars * sizeof(int)))) return PIO_ENOMEM; + if (!(*ndim = malloc(*nvars * sizeof(int)))) + return PIO_ENOMEM; } /* How many unlimited dims for this file? */ @@ -2526,6 +2528,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, int *pio_type_size = NULL; MPI_Datatype *mpi_type = NULL; int *mpi_type_size = NULL; + int *ndim = NULL; int mpierr = MPI_SUCCESS, mpierr2; /** Return code from MPI function codes. */ int ierr = PIO_NOERR; /* Return code from function calls. */ @@ -2614,7 +2617,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, break; if ((ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF4P, &nvars, &rec_var, &pio_type, - &pio_type_size, &mpi_type, &mpi_type_size))) + &pio_type_size, &mpi_type, &mpi_type_size, &ndim))) break; PLOG((2, "PIOc_openfile_retry:nc_open_par filename = %s mode = %d imode = %d ierr = %d", filename, mode, imode, ierr)); @@ -2630,7 +2633,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, if ((ierr = check_unlim_use(file->fh))) break; ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF4C, &nvars, &rec_var, &pio_type, - &pio_type_size, &mpi_type, &mpi_type_size); + &pio_type_size, &mpi_type, &mpi_type_size, &ndim); } break; #endif /* _NETCDF4 */ @@ -2641,7 +2644,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, if ((ierr = nc_open(filename, mode, &file->fh))) break; ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF, &nvars, &rec_var, &pio_type, - &pio_type_size, &mpi_type, &mpi_type_size); + &pio_type_size, &mpi_type, &mpi_type_size, &ndim); } break; @@ -2660,7 +2663,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, if (!ierr) ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_PNETCDF, &nvars, &rec_var, &pio_type, - &pio_type_size, &mpi_type, &mpi_type_size); + &pio_type_size, &mpi_type, &mpi_type_size, &ndim); break; #endif @@ -2691,7 +2694,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, ierr = nc_open(filename, mode, &file->fh); if (ierr == PIO_NOERR) ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF, &nvars, &rec_var, &pio_type, - &pio_type_size, &mpi_type, &mpi_type_size); + &pio_type_size, &mpi_type, &mpi_type_size, &ndim); } else file->do_io = 0; @@ -2808,6 +2811,8 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, free(mpi_type); if (mpi_type_size) free(mpi_type_size); + if (ndim) + free(ndim); } #ifdef USE_MPE From 9c4257dfb53d178a6e2870772b9fc4fe02cb0076 Mon Sep 17 00:00:00 2001 From: edwardhartnett Date: Fri, 6 Sep 2019 05:07:21 -0600 Subject: [PATCH 4/6] continuing to add ndims to var_desc_t --- src/clib/pioc_support.c | 45 ++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/src/clib/pioc_support.c b/src/clib/pioc_support.c index c89dfc4ce2c..0c9dcab5d63 100644 --- a/src/clib/pioc_support.c +++ b/src/clib/pioc_support.c @@ -2347,6 +2347,7 @@ inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, if ((ret = nc_inq_var(ncid, v, NULL, &my_type, &var_ndims, NULL, NULL))) return pio_err(NULL, file, ret, __FILE__, __LINE__); (*pio_type)[v] = (int)my_type; + (*ndim)[v] = var_ndims; if ((ret = nc_inq_type(ncid, (*pio_type)[v], NULL, &type_size))) return check_netcdf(file, ret, __FILE__, __LINE__); (*pio_type_size)[v] = type_size; @@ -2609,18 +2610,21 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, ierr = nc_open(filename, mode, &file->fh); #else imode = mode | NC_MPIIO; - if ((ierr = nc_open_par(filename, imode, ios->io_comm, ios->info, &file->fh))) + if ((ierr = nc_open_par(filename, imode, ios->io_comm, ios->info, + &file->fh))) break; /* Check the vars for valid use of unlim dims. */ if ((ierr = check_unlim_use(file->fh))) break; - if ((ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF4P, &nvars, &rec_var, &pio_type, - &pio_type_size, &mpi_type, &mpi_type_size, &ndim))) + if ((ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF4P, + &nvars, &rec_var, &pio_type, + &pio_type_size, &mpi_type, + &mpi_type_size, &ndim))) break; - PLOG((2, "PIOc_openfile_retry:nc_open_par filename = %s mode = %d imode = %d ierr = %d", - filename, mode, imode, ierr)); + PLOG((2, "PIOc_openfile_retry:nc_open_par filename = %s mode = %d " + "imode = %d ierr = %d", filename, mode, imode, ierr)); #endif break; @@ -2632,8 +2636,10 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, /* Check the vars for valid use of unlim dims. */ if ((ierr = check_unlim_use(file->fh))) break; - ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF4C, &nvars, &rec_var, &pio_type, - &pio_type_size, &mpi_type, &mpi_type_size, &ndim); + ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF4C, + &nvars, &rec_var, &pio_type, + &pio_type_size, &mpi_type, + &mpi_type_size, &ndim); } break; #endif /* _NETCDF4 */ @@ -2643,8 +2649,10 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, { if ((ierr = nc_open(filename, mode, &file->fh))) break; - ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF, &nvars, &rec_var, &pio_type, - &pio_type_size, &mpi_type, &mpi_type_size, &ndim); + ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF, + &nvars, &rec_var, &pio_type, + &pio_type_size, &mpi_type, + &mpi_type_size, &ndim); } break; @@ -2656,14 +2664,17 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, if (ierr == PIO_NOERR && (mode & PIO_WRITE)) { if (ios->iomaster == MPI_ROOT) - PLOG((2, "%d Setting IO buffer %ld", __LINE__, pio_buffer_size_limit)); + PLOG((2, "%d Setting IO buffer %ld", __LINE__, + pio_buffer_size_limit)); ierr = ncmpi_buffer_attach(file->fh, pio_buffer_size_limit); } PLOG((2, "ncmpi_open(%s) : fd = %d", filename, file->fh)); if (!ierr) - ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_PNETCDF, &nvars, &rec_var, &pio_type, - &pio_type_size, &mpi_type, &mpi_type_size, &ndim); + ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_PNETCDF, + &nvars, &rec_var, &pio_type, + &pio_type_size, &mpi_type, + &mpi_type_size, &ndim); break; #endif @@ -2693,8 +2704,10 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, { ierr = nc_open(filename, mode, &file->fh); if (ierr == PIO_NOERR) - ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF, &nvars, &rec_var, &pio_type, - &pio_type_size, &mpi_type, &mpi_type_size, &ndim); + ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF, + &nvars, &rec_var, &pio_type, + &pio_type_size, &mpi_type, + &mpi_type_size, &ndim); } else file->do_io = 0; @@ -2747,6 +2760,8 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, return pio_err(ios, file, PIO_ENOMEM, __FILE__, __LINE__); if (!(mpi_type_size = malloc(nvars * sizeof(int)))) return pio_err(ios, file, PIO_ENOMEM, __FILE__, __LINE__); + if (!(ndim = malloc(nvars * sizeof(int)))) + return pio_err(ios, file, PIO_ENOMEM, __FILE__, __LINE__); } if (nvars) { @@ -2760,6 +2775,8 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, return check_mpi(NULL, file, mpierr, __FILE__, __LINE__); if ((mpierr = MPI_Bcast(mpi_type_size, nvars, MPI_INT, ios->ioroot, ios->my_comm))) return check_mpi(NULL, file, mpierr, __FILE__, __LINE__); + if ((mpierr = MPI_Bcast(ndim, nvars, MPI_INT, ios->ioroot, ios->my_comm))) + return check_mpi(NULL, file, mpierr, __FILE__, __LINE__); } /* With the netCDF integration layer, the ncid is assigned for PIO From 0020927f409e84200dbbaea1c20112cb60f2a211 Mon Sep 17 00:00:00 2001 From: edwardhartnett Date: Fri, 6 Sep 2019 05:14:03 -0600 Subject: [PATCH 5/6] adding ndims to var_desc_t --- src/clib/pio_internal.h | 3 ++- src/clib/pio_lists.c | 5 ++++- src/clib/pio_nc.c | 4 ++-- src/clib/pioc_support.c | 5 +++-- tests/cunit/test_spmd.c | 25 +++++++++++++------------ 5 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/clib/pio_internal.h b/src/clib/pio_internal.h index 0379929e6be..595f3b93f31 100644 --- a/src/clib/pio_internal.h +++ b/src/clib/pio_internal.h @@ -182,7 +182,8 @@ extern "C" { /* List operations for var_desc_t list. */ int add_to_varlist(int varid, int rec_var, int pio_type, int pio_type_size, - MPI_Datatype mpi_type, int mpi_type_size, var_desc_t **varlist); + MPI_Datatype mpi_type, int mpi_type_size, int ndim, + var_desc_t **varlist); int get_var_desc(int varid, var_desc_t **varlist, var_desc_t **var_desc); int delete_var_desc(int varid, var_desc_t **varlist); diff --git a/src/clib/pio_lists.c b/src/clib/pio_lists.c index c0d26268144..ab09c73a7a7 100644 --- a/src/clib/pio_lists.c +++ b/src/clib/pio_lists.c @@ -303,13 +303,15 @@ pio_delete_iodesc_from_list(int ioid) * @param pio_type_size size of the PIO type in bytes * @param mpi_type the MPI type. * @param mpi_type_size size of the MPI type in bytes. + * @param ndims the number of dims for this var. * @param varlist pointer to list to add to. * @returns 0 for success, error code otherwise. * @author Ed Hartnett */ int add_to_varlist(int varid, int rec_var, int pio_type, int pio_type_size, - MPI_Datatype mpi_type, int mpi_type_size, var_desc_t **varlist) + MPI_Datatype mpi_type, int mpi_type_size, int ndims, + var_desc_t **varlist) { var_desc_t *var_desc; @@ -327,6 +329,7 @@ add_to_varlist(int varid, int rec_var, int pio_type, int pio_type_size, var_desc->pio_type_size = pio_type_size; var_desc->mpi_type = mpi_type; var_desc->mpi_type_size = mpi_type_size; + var_desc->ndims = ndims; var_desc->record = -1; HASH_ADD_INT(*varlist, varid, var_desc); diff --git a/src/clib/pio_nc.c b/src/clib/pio_nc.c index b63354b81cb..f7ff08156fb 100644 --- a/src/clib/pio_nc.c +++ b/src/clib/pio_nc.c @@ -2109,7 +2109,7 @@ PIOc_def_dim(int ncid, const char *name, PIO_Offset len, int *idp) } /** - * The PIO-C interface for the NetCDF function nc_def_var. + * The PIO-C interface for the NetCDF function nc_def_var * * This routine is called collectively by all tasks in the communicator * ios.union_comm. For more information on the underlying NetCDF commmand @@ -2302,7 +2302,7 @@ PIOc_def_var(int ncid, const char *name, nc_type xtype, int ndims, /* Add to the list of var_desc_t structs for this file. */ if ((ierr = add_to_varlist(varid, rec_var, xtype, (int)pio_type_size, mpi_type, - mpi_type_size, &file->varlist))) + mpi_type_size, ndims, &file->varlist))) return pio_err(ios, NULL, ierr, __FILE__, __LINE__); file->nvars++; diff --git a/src/clib/pioc_support.c b/src/clib/pioc_support.c index 0c9dcab5d63..9e031bfaadf 100644 --- a/src/clib/pioc_support.c +++ b/src/clib/pioc_support.c @@ -2810,8 +2810,9 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, /* Add info about the variables to the file_desc_t struct. */ for (int v = 0; v < nvars; v++) - if ((ierr = add_to_varlist(v, rec_var[v], pio_type[v], pio_type_size[v], mpi_type[v], - mpi_type_size[v], &file->varlist))) + if ((ierr = add_to_varlist(v, rec_var[v], pio_type[v], pio_type_size[v], + mpi_type[v], mpi_type_size[v], ndim[v], + &file->varlist))) return pio_err(ios, NULL, ierr, __FILE__, __LINE__); file->nvars = nvars; diff --git a/tests/cunit/test_spmd.c b/tests/cunit/test_spmd.c index 5db8c3a3b81..f56d6a5a6fa 100644 --- a/tests/cunit/test_spmd.c +++ b/tests/cunit/test_spmd.c @@ -323,14 +323,15 @@ int test_varlists() return ERR_WRONG; /* Add a var to the list. */ - if ((ret = add_to_varlist(0, 1, PIO_INT, 4, MPI_INT, 4, &varlist))) + if ((ret = add_to_varlist(0, 1, PIO_INT, 4, MPI_INT, 4, 2, &varlist))) return ret; /* Find that var_desc_t. */ if ((ret = get_var_desc(0, &varlist, &var_desc))) return ret; if (var_desc->varid != 0 || !var_desc->rec_var || var_desc->pio_type != PIO_INT || - var_desc->pio_type_size != 4 || var_desc->mpi_type != MPI_INT || var_desc->mpi_type_size != 4) + var_desc->pio_type_size != 4 || var_desc->mpi_type != MPI_INT || + var_desc->mpi_type_size != 4 || var_desc->ndims != 2) return ERR_WRONG; /* Try to delete a non-existing var - should fail. */ @@ -360,30 +361,30 @@ int test_varlists2() int ret; /* Add some vars to the list. */ - if ((ret = add_to_varlist(0, 1, PIO_INT, 4, MPI_INT, 4, &varlist))) + if ((ret = add_to_varlist(0, 1, PIO_INT, 4, MPI_INT, 4, 0, &varlist))) return ret; - if ((ret = add_to_varlist(1, 0, PIO_DOUBLE, 8, MPI_DOUBLE, 8, &varlist))) + if ((ret = add_to_varlist(1, 0, PIO_DOUBLE, 8, MPI_DOUBLE, 8, 1, &varlist))) return ret; - if ((ret = add_to_varlist(2, 1, PIO_BYTE, 1, MPI_CHAR, 1, &varlist))) + if ((ret = add_to_varlist(2, 1, PIO_BYTE, 1, MPI_CHAR, 1, 2, &varlist))) return ret; /* Find those var_desc_t. */ if ((ret = get_var_desc(0, &varlist, &var_desc))) return ret; if (var_desc->varid != 0 || !var_desc->rec_var || var_desc->pio_type != PIO_INT || - var_desc->pio_type_size != 4 || var_desc->mpi_type != MPI_INT) + var_desc->pio_type_size != 4 || var_desc->mpi_type != MPI_INT || var_desc->ndims != 0) return ERR_WRONG; if ((ret = get_var_desc(1, &varlist, &var_desc))) return ret; if (var_desc->varid != 1 || var_desc->rec_var || var_desc->pio_type != PIO_DOUBLE || - var_desc->pio_type_size != 8) + var_desc->pio_type_size != 8 || var_desc->ndims != 1) return ERR_WRONG; if ((ret = get_var_desc(2, &varlist, &var_desc))) return ret; if (var_desc->varid != 2 || !var_desc->rec_var || var_desc->pio_type != PIO_BYTE || - var_desc->pio_type_size != 1) + var_desc->pio_type_size != 1 || var_desc->ndims != 2) return ERR_WRONG; /* Try to delete a non-existing var - should fail. */ @@ -432,13 +433,13 @@ int test_varlists3() int ret; /* Add some vars to the list. */ - if ((ret = add_to_varlist(0, 1, PIO_INT, 4, MPI_INT, 4, &varlist))) + if ((ret = add_to_varlist(0, 1, PIO_INT, 4, MPI_INT, 4, 0, &varlist))) return ret; - if ((ret = add_to_varlist(1, 0, PIO_INT, 4, MPI_INT, 4, &varlist))) + if ((ret = add_to_varlist(1, 0, PIO_INT, 4, MPI_INT, 4, 1, &varlist))) return ret; - if ((ret = add_to_varlist(2, 1, PIO_INT, 4, MPI_INT, 4, &varlist))) + if ((ret = add_to_varlist(2, 1, PIO_INT, 4, MPI_INT, 4, 2, &varlist))) return ret; - if ((ret = add_to_varlist(3, 0, PIO_INT, 4, MPI_INT, 4, &varlist))) + if ((ret = add_to_varlist(3, 0, PIO_INT, 4, MPI_INT, 4, 3, &varlist))) return ret; /* Delete one of the vars. */ From f07cbeca30b9193f987e65af6689e9fee7644f18 Mon Sep 17 00:00:00 2001 From: edwardhartnett Date: Fri, 6 Sep 2019 05:48:17 -0600 Subject: [PATCH 6/6] now store ndims in var_desc_t and no longer need to look it up in read_darray() --- src/clib/pio_darray_int.c | 16 ++++++++++------ src/clib/pio_lists.c | 4 ++++ src/clib/pioc_support.c | 29 +++++++++++++++-------------- tests/cunit/test_async_1d.c | 5 +++-- tests/cunit/test_darray.c | 1 - tests/ncint/tst_pio_async.c | 6 +++--- tests/ncint/tst_pio_udf.c | 2 +- 7 files changed, 36 insertions(+), 27 deletions(-) diff --git a/src/clib/pio_darray_int.c b/src/clib/pio_darray_int.c index e39816bd216..288a23259b3 100644 --- a/src/clib/pio_darray_int.c +++ b/src/clib/pio_darray_int.c @@ -1189,8 +1189,10 @@ pio_read_darray_nc(file_desc_t *file, io_desc_t *iodesc, int vid, void *iobuf) ndims = iodesc->ndims; /* Get the number of dims for this var in the file. */ - if ((ierr = PIOc_inq_varndims(file->pio_ncid, vid, &fndims))) - return pio_err(ios, file, ierr, __FILE__, __LINE__); + /* if ((ierr = PIOc_inq_varndims(file->pio_ncid, vid, &fndims))) */ + /* return pio_err(ios, file, ierr, __FILE__, __LINE__); */ + fndims = vdesc->ndims; + PLOG((3, "fndims %d vdesc->ndims %d", fndims, vdesc->ndims)); #if USE_VARD_READ if(!ios->async || !ios->ioproc) ierr = get_gdim0(file, iodesc, vid, fndims, &gdim0); @@ -1461,15 +1463,17 @@ pio_read_darray_nc_serial(file_desc_t *file, io_desc_t *iodesc, int vid, ndims = iodesc->ndims; /* Get number of dims for this var. */ - if ((ierr = PIOc_inq_varndims(file->pio_ncid, vid, &fndims))) - return pio_err(ios, file, ierr, __FILE__, __LINE__); + fndims = vdesc->ndims; + /* if ((ierr = PIOc_inq_varndims(file->pio_ncid, vid, &fndims))) */ + /* return pio_err(ios, file, ierr, __FILE__, __LINE__); */ /* If setframe was not called, use a default value of 0. This is * required for backward compatibility. */ if (fndims == ndims + 1 && vdesc->record < 0) vdesc->record = 0; - PLOG((3, "fndims %d ndims %d vdesc->record %d", fndims, ndims, - vdesc->record)); + PLOG((3, "fndims %d ndims %d vdesc->record %d vdesc->ndims %d", fndims, + ndims, vdesc->record, vdesc->ndims)); + /* pioassert(fndims == vdesc->ndims, "bad ndims", __FILE__, __LINE__); */ /* Confirm that we are being called with the correct ndims. */ pioassert((fndims == ndims && vdesc->record < 0) || diff --git a/src/clib/pio_lists.c b/src/clib/pio_lists.c index ab09c73a7a7..9340fe60086 100644 --- a/src/clib/pio_lists.c +++ b/src/clib/pio_lists.c @@ -318,6 +318,10 @@ add_to_varlist(int varid, int rec_var, int pio_type, int pio_type_size, /* Check inputs. */ pioassert(varid >= 0 && varlist, "invalid input", __FILE__, __LINE__); + PLOG((4, "add_to_varlist varid %d rec_var %d pio_type %d pio_type_size %d " + "mpi_type %d mpi_type_size %d ndims %d", varid, rec_var, pio_type, + pio_type_size, mpi_type, mpi_type_size, ndims)); + /* Allocate storage. */ if (!(var_desc = calloc(1, sizeof(var_desc_t)))) return PIO_ENOMEM; diff --git a/src/clib/pioc_support.c b/src/clib/pioc_support.c index 9e031bfaadf..4c1be3655e1 100644 --- a/src/clib/pioc_support.c +++ b/src/clib/pioc_support.c @@ -2235,7 +2235,7 @@ check_unlim_use(int ncid) static int inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, int **rec_var, int **pio_type, int **pio_type_size, - MPI_Datatype **mpi_type, int **mpi_type_size, int **ndim) + MPI_Datatype **mpi_type, int **mpi_type_size, int **ndims) { int nunlimdims = 0; /* The number of unlimited dimensions. */ int unlimdimid; @@ -2274,7 +2274,7 @@ inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, return PIO_ENOMEM; if (!(*mpi_type_size = malloc(*nvars * sizeof(int)))) return PIO_ENOMEM; - if (!(*ndim = malloc(*nvars * sizeof(int)))) + if (!(*ndims = malloc(*nvars * sizeof(int)))) return PIO_ENOMEM; } @@ -2335,6 +2335,7 @@ inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, if ((ret = ncmpi_inq_var(ncid, v, NULL, &my_type, &var_ndims, NULL, NULL))) return pio_err(NULL, file, ret, __FILE__, __LINE__); (*pio_type)[v] = (int)my_type; + (*ndims)[v] = var_ndims; if ((ret = pioc_pnetcdf_inq_type(ncid, (*pio_type)[v], NULL, &type_size))) return check_netcdf(file, ret, __FILE__, __LINE__); (*pio_type_size)[v] = type_size; @@ -2347,7 +2348,7 @@ inq_file_metadata(file_desc_t *file, int ncid, int iotype, int *nvars, if ((ret = nc_inq_var(ncid, v, NULL, &my_type, &var_ndims, NULL, NULL))) return pio_err(NULL, file, ret, __FILE__, __LINE__); (*pio_type)[v] = (int)my_type; - (*ndim)[v] = var_ndims; + (*ndims)[v] = var_ndims; if ((ret = nc_inq_type(ncid, (*pio_type)[v], NULL, &type_size))) return check_netcdf(file, ret, __FILE__, __LINE__); (*pio_type_size)[v] = type_size; @@ -2529,7 +2530,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, int *pio_type_size = NULL; MPI_Datatype *mpi_type = NULL; int *mpi_type_size = NULL; - int *ndim = NULL; + int *ndims = NULL; int mpierr = MPI_SUCCESS, mpierr2; /** Return code from MPI function codes. */ int ierr = PIO_NOERR; /* Return code from function calls. */ @@ -2621,7 +2622,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, if ((ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF4P, &nvars, &rec_var, &pio_type, &pio_type_size, &mpi_type, - &mpi_type_size, &ndim))) + &mpi_type_size, &ndims))) break; PLOG((2, "PIOc_openfile_retry:nc_open_par filename = %s mode = %d " "imode = %d ierr = %d", filename, mode, imode, ierr)); @@ -2639,7 +2640,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF4C, &nvars, &rec_var, &pio_type, &pio_type_size, &mpi_type, - &mpi_type_size, &ndim); + &mpi_type_size, &ndims); } break; #endif /* _NETCDF4 */ @@ -2652,7 +2653,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF, &nvars, &rec_var, &pio_type, &pio_type_size, &mpi_type, - &mpi_type_size, &ndim); + &mpi_type_size, &ndims); } break; @@ -2674,7 +2675,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_PNETCDF, &nvars, &rec_var, &pio_type, &pio_type_size, &mpi_type, - &mpi_type_size, &ndim); + &mpi_type_size, &ndims); break; #endif @@ -2707,7 +2708,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, ierr = inq_file_metadata(file, file->fh, PIO_IOTYPE_NETCDF, &nvars, &rec_var, &pio_type, &pio_type_size, &mpi_type, - &mpi_type_size, &ndim); + &mpi_type_size, &ndims); } else file->do_io = 0; @@ -2760,7 +2761,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, return pio_err(ios, file, PIO_ENOMEM, __FILE__, __LINE__); if (!(mpi_type_size = malloc(nvars * sizeof(int)))) return pio_err(ios, file, PIO_ENOMEM, __FILE__, __LINE__); - if (!(ndim = malloc(nvars * sizeof(int)))) + if (!(ndims = malloc(nvars * sizeof(int)))) return pio_err(ios, file, PIO_ENOMEM, __FILE__, __LINE__); } if (nvars) @@ -2775,7 +2776,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, return check_mpi(NULL, file, mpierr, __FILE__, __LINE__); if ((mpierr = MPI_Bcast(mpi_type_size, nvars, MPI_INT, ios->ioroot, ios->my_comm))) return check_mpi(NULL, file, mpierr, __FILE__, __LINE__); - if ((mpierr = MPI_Bcast(ndim, nvars, MPI_INT, ios->ioroot, ios->my_comm))) + if ((mpierr = MPI_Bcast(ndims, nvars, MPI_INT, ios->ioroot, ios->my_comm))) return check_mpi(NULL, file, mpierr, __FILE__, __LINE__); } @@ -2811,7 +2812,7 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, /* Add info about the variables to the file_desc_t struct. */ for (int v = 0; v < nvars; v++) if ((ierr = add_to_varlist(v, rec_var[v], pio_type[v], pio_type_size[v], - mpi_type[v], mpi_type_size[v], ndim[v], + mpi_type[v], mpi_type_size[v], ndims[v], &file->varlist))) return pio_err(ios, NULL, ierr, __FILE__, __LINE__); file->nvars = nvars; @@ -2829,8 +2830,8 @@ PIOc_openfile_retry(int iosysid, int *ncidp, int *iotype, const char *filename, free(mpi_type); if (mpi_type_size) free(mpi_type_size); - if (ndim) - free(ndim); + if (ndims) + free(ndims); } #ifdef USE_MPE diff --git a/tests/cunit/test_async_1d.c b/tests/cunit/test_async_1d.c index 212def42ab5..6fbc596c144 100644 --- a/tests/cunit/test_async_1d.c +++ b/tests/cunit/test_async_1d.c @@ -64,7 +64,7 @@ int main(int argc, char **argv) /* Make sure we have 4 tasks. */ if (ntasks != TARGET_NTASKS) ERR(ERR_WRONG); - PIOc_set_log_level(4); + /* PIOc_set_log_level(4); */ /* Change error handling so we can test inval parameters. */ if ((ret = PIOc_set_iosystem_error_handling(PIO_DEFAULT, PIO_RETURN_ERROR, NULL))) @@ -87,7 +87,8 @@ int main(int argc, char **argv) int gdimlen[NDIM1] = {DIM_LEN_1}; PIO_Offset compmap[MAPLEN]; int varid; - int data, data_in; + int data; + /* int data_in; */ int ioid; /* Create a file. */ diff --git a/tests/cunit/test_darray.c b/tests/cunit/test_darray.c index 3c5317ff73b..ee16c525dc5 100644 --- a/tests/cunit/test_darray.c +++ b/tests/cunit/test_darray.c @@ -230,7 +230,6 @@ int test_darray(int iosysid, int ioid, int num_flavors, int *flavor, int my_rank if (PIOc_write_darray_multi(ncid, &varid_big, ioid, 1, arraylen, test_data, &frame, fillvalue, flushtodisk) != PIO_ENOTVAR) ERR(ERR_WRONG); -// pio_setloglevel(3); if (PIOc_write_darray_multi(ncid, &wrong_varid, ioid, 1, arraylen, test_data, &frame, fillvalue, flushtodisk) != PIO_ENOTVAR) ERR(ERR_WRONG); diff --git a/tests/ncint/tst_pio_async.c b/tests/ncint/tst_pio_async.c index 17c72cf202c..3201493c29d 100644 --- a/tests/ncint/tst_pio_async.c +++ b/tests/ncint/tst_pio_async.c @@ -76,13 +76,13 @@ main(int argc, char **argv) /* Calculate a decomposition for distributed arrays. */ elements_per_pe = DIM_LEN_X * DIM_LEN_Y / (ntasks - num_io_procs); - printf("my_rank %d elements_per_pe %ld\n", my_rank, elements_per_pe); + /* printf("my_rank %d elements_per_pe %ld\n", my_rank, elements_per_pe); */ if (!(compdof = malloc(elements_per_pe * sizeof(size_t)))) PERR; for (i = 0; i < elements_per_pe; i++) { compdof[i] = (my_rank - num_io_procs) * elements_per_pe + i; - printf("my_rank %d compdof[%d]=%ld\n", my_rank, i, compdof[i]); + /* printf("my_rank %d compdof[%d]=%ld\n", my_rank, i, compdof[i]); */ } /* Create the PIO decomposition for this test. */ @@ -121,7 +121,7 @@ main(int argc, char **argv) for (i = 0; i < elements_per_pe; i++) { compdof2[i] = (my_rank - num_io_procs) * elements_per_pe + i; - printf("my_rank %d compdof2[%d]=%lld\n", my_rank, i, compdof2[i]); + /* printf("my_rank %d compdof2[%d]=%lld\n", my_rank, i, compdof2[i]); */ } if (PIOc_init_decomp(iosysid, PIO_INT, NDIM2, &dimlen[1], elements_per_pe, compdof2, diff --git a/tests/ncint/tst_pio_udf.c b/tests/ncint/tst_pio_udf.c index 1a25df9dacf..dedcd536ee2 100644 --- a/tests/ncint/tst_pio_udf.c +++ b/tests/ncint/tst_pio_udf.c @@ -61,7 +61,7 @@ main(int argc, char **argv) int i; /* Turn on logging for PIO library. */ - PIOc_set_log_level(3); + /* PIOc_set_log_level(3); */ /* Initialize the intracomm. */ if (nc_def_iosystemm(MPI_COMM_WORLD, 1, 1, 0, 0, &iosysid)) PERR;