From 0020927f409e84200dbbaea1c20112cb60f2a211 Mon Sep 17 00:00:00 2001 From: edwardhartnett Date: Fri, 6 Sep 2019 05:14:03 -0600 Subject: [PATCH] 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. */