Skip to content

Commit

Permalink
adding ndims to var_desc_t
Browse files Browse the repository at this point in the history
  • Loading branch information
edhartnett committed Sep 6, 2019
1 parent 9c4257d commit 0020927
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 18 deletions.
3 changes: 2 additions & 1 deletion src/clib/pio_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
5 changes: 4 additions & 1 deletion src/clib/pio_lists.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions src/clib/pio_nc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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++;

Expand Down
5 changes: 3 additions & 2 deletions src/clib/pioc_support.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
25 changes: 13 additions & 12 deletions tests/cunit/test_spmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down Expand Up @@ -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. */
Expand Down Expand Up @@ -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. */
Expand Down

0 comments on commit 0020927

Please sign in to comment.