source of put_vara

Rob Latham robl at mcs.anl.gov
Mon Aug 13 09:21:04 CDT 2012


On Sun, Aug 12, 2012 at 03:46:14AM +0000, Liu, Jaln wrote:
> Hi,
> 
> In the source code of netcdf4.1, I want to know the detail of their
> io part.

Hi.  This mailing list is for the Argonne/Northwestern
"Parallel-NetCDF" project.  I think you want the Unidata NetCDF4 (with
parallel I/O support)
mailing list.  

> i found the definition of NC_Dispatch structor, in which
> there is a function pointer of put_vara, i.e., int (*put_vara)(int
> ,int ,const size_t *, const size_t *, const void*, nctype); But I
> couldn't find the implementation of this function through all the
> netcdf codes. 

I'd suggest sending this request up netcdfgroup at unidata.ucar.edu .  I
happen to know a tiny bit about Unidata NetCDF-4 source code.

You've found the NC_Dispatch struct.  For parallel-io, that dispatch
structure is initiated in libsrc4/nc4dispatch.c 

You can trace your way through the functions to find nc4_put_vara()
(in libsrc4/nc4hdf.c but hopefully you are using ctags or cscope and
do not need to particularly care in which file a function lives).
That function does the most work (and has a somewhat boisterous comment
declaring so). 

beyond these landmarks, you'll have to talk to Unidata people for more
of the "why" and "how".

> I know this question may not belong to
> parallel-netcdf, but how the netcdf layer do the io is very
> interesting, and how the parallel-netcdf utilize the mpi-io to
> improve the io routine is important. Can anyone give me some ideas
> for those questions? I appreciate for any suggestion.

Unidata NetCDF-4 sits on top of HDF5.  It's the HDF5 layer that does
the parallel I/O work, so perhaps you will need to experiment a bit
with HDF5 to really answer your question.

==rob

-- 
Rob Latham
Mathematics and Computer Science Division
Argonne National Lab, IL USA


More information about the parallel-netcdf mailing list