Go to file
Dennis Heimbigner ee509ff4f3 Re-Implement the nc_get/put_vars operations for netcdf-4 using the
corresponding HDF5 operations.

re: github issue https://github.com/Unidata/netcdf-c/issues/908
also in reference to https://github.com/pydata/xarray/issues/2004

The netcdf-c library has implemented the nc_get_vars and nc_put_vars
operations as element at a time. This has resulted in very slow
operation.

This pr attempts to improve the situation for netcdf-4/hdf5 files
by using the slab operations provided by the hdf5 library. The new
implementation passes the get/put vars stride information down to
the hdf5 slab operations.

The result appears to improve performance significantly. Some simple
tests on large 2-D arrays shows speedups in excess of 150.

Misc. other changes:
1. fix bug in ncgen/semantics.c; using a list's allocated length
   instead of actual length.
2. Added a temporary hook in the netcdf library plus a performance
   test case (tst_varsperf.c) to estimate the speedup. After users
   have had some experience with this, I will remove it, probably
   after the 4.7 release.
2018-05-22 16:50:52 -06:00
.github Adopted codeowners file from metpy project; this is a technical ownership and is not asserting ownership of code/copyright. Any code that does not have an obvious owner (from the perspective of github) will default to @WardF and @DennisHeimbigner 2018-03-16 14:46:08 -06:00
cmake
conda.recipe Attempting appveyor support. Based on work by @ocefpaf, see https://github.com/Unidata/netcdf-c/pull/347 for more information. 2018-04-24 11:28:22 -06:00
dap4_test
docs Merge branch 'master' into dapparams.dmh 2018-05-16 14:34:28 -06:00
examples Misc. source comment typos 2018-04-26 23:04:01 -04:00
h5_test Misc. source comment typos 2018-04-26 23:04:01 -04:00
hdf4_test Corrected an issue observed on centos7. 2018-05-02 16:37:21 -06:00
include Re-Implement the nc_get/put_vars operations for netcdf-4 using the 2018-05-22 16:50:52 -06:00
libdap2 Merge branch 'dapparams.dmh' of https://github.com/Unidata/netcdf-c into dapparams.dmh 2018-05-19 16:11:24 -06:00
libdap4 Merge remote-tracking branch 'origin/cleanncgen.dmh' into small-pr-aggregate.wif 2018-05-16 14:32:10 -06:00
libdispatch Merge branch 'dapparams.dmh' of https://github.com/Unidata/netcdf-c into dapparams.dmh 2018-05-19 16:11:24 -06:00
libhdf4 Merge branch 'master' into ejh_hdf4_cleanup 2018-04-30 17:53:19 -06:00
libhdf5 Re-Implement the nc_get/put_vars operations for netcdf-4 using the 2018-05-22 16:50:52 -06:00
liblib created libhdf5, moved some files 2018-05-08 11:58:01 -06:00
libsrc Merge branch 'master' into inmem2.dmh 2018-05-16 14:24:19 -06:00
libsrc4 Re-Implement the nc_get/put_vars operations for netcdf-4 using the 2018-05-22 16:50:52 -06:00
libsrcp Merge branch 'master' into inmemory.dmh 2018-04-23 11:30:14 -06:00
nc_test Re-Implement the nc_get/put_vars operations for netcdf-4 using the 2018-05-22 16:50:52 -06:00
nc_test4 Re-Implement the nc_get/put_vars operations for netcdf-4 using the 2018-05-22 16:50:52 -06:00
ncdap_test Merge branch 'dapparams.dmh' of https://github.com/Unidata/netcdf-c into dapparams.dmh 2018-05-19 16:11:24 -06:00
ncdump Merge remote-tracking branch 'origin/cleanncgen.dmh' into small-pr-aggregate.wif 2018-05-16 14:32:10 -06:00
ncgen Re-Implement the nc_get/put_vars operations for netcdf-4 using the 2018-05-22 16:50:52 -06:00
ncgen3
nctest Merge branch 'master' into appveyor.wif 2018-05-14 13:19:17 -06:00
oc2 Misc. source comment typos 2018-04-26 23:04:01 -04:00
plugins re: gh issue https://github.com/Unidata/netcdf-c/issues/911 2018-04-21 20:10:47 -06:00
.gitignore
.travis.yml Noticed a missing '-e' 2018-05-10 16:03:24 -06:00
acinclude.m4 Merge branch 'master' into ejh_cleanup 2018-04-02 18:11:58 -06:00
appveyor.yml Typo. 2018-05-15 13:52:49 -06:00
cf Merge remote-tracking branch 'origin/cleanncgen.dmh' into small-pr-aggregate.wif 2018-05-16 14:32:10 -06:00
cf.cmake re: esupport MQO-415619 2018-05-03 21:02:32 -06:00
cmake_uninstall.cmake.in
CMakeInstallation.cmake
CMakeLists.txt Merge branch 'master' into inmem2.dmh 2018-05-16 14:24:19 -06:00
CODE_OF_CONDUCT.md Updated email in code of conduct. 2018-03-16 14:56:08 -06:00
COMPILE.cmake.txt
config.h.cmake.in
config.h.cmake.in.old-works
configure.ac Merge branch 'master' into inmem2.dmh 2018-05-16 14:24:19 -06:00
CONTRIBUTING.md
COPYRIGHT
CTestConfig.cmake.in
CTestCustom.cmake
dods.m4 Misc. source comment typos 2018-04-26 23:04:01 -04:00
FixBundle.cmake.in
INSTALL.md
lib_flags.am
libnetcdf.settings.in
Make0
Makefile.am created libhdf5, moved some files 2018-05-08 11:58:01 -06:00
mclean
nc-config.cmake.in
nc-config.in
netcdf.pc.in
netCDFConfig.cmake.in
PostInstall.cmake
postinstall.sh.in
README.md
RELEASE_NOTES.md Re-Implement the nc_get/put_vars operations for netcdf-4 using the 2018-05-22 16:50:52 -06:00
test_common.in
test_prog.c
test-driver-verbose
wjna

Unidata NetCDF

Build Status Coverity Scan Build Status

About

The Unidata network Common Data Form (netCDF) is an interface for scientific data access and a freely-distributed software library that provides an implementation of the interface. The netCDF library also defines a machine-independent format for representing scientific data. Together, the interface, library, and format support the creation, access, and sharing of scientific data. The current netCDF software provides C interfaces for applications and data. Separate software distributions available from Unidata provide Java, Fortran, Python, and C++ interfaces. They have been tested on various common platforms.

Properties

NetCDF files are self-describing, network-transparent, directly accessible, and extendible. Self-describing means that a netCDF file includes information about the data it contains. Network-transparent means that a netCDF file is represented in a form that can be accessed by computers with different ways of storing integers, characters, and floating-point numbers. Direct-access means that a small subset of a large dataset may be accessed efficiently, without first reading through all the preceding data. Extendible means that data can be appended to a netCDF dataset without copying it or redefining its structure.

Use

NetCDF is useful for supporting access to diverse kinds of scientific data in heterogeneous networking environments and for writing application software that does not depend on application-specific formats. For information about a variety of analysis and display packages that have been developed to analyze and display data in netCDF form, see

More information

For more information about netCDF, see

Latest releases

You can obtain a copy of the latest released version of netCDF software for various languages:

Copyright and licensing information can be found here, as well as in the COPYRIGHT file accompanying the software

Installation

To install the netCDF-C software, please see the file INSTALL in the netCDF-C distribution, or the (usually more up-to-date) document:

Documentation

A language-independent User's Guide for netCDF, and some other language-specific user-level documents are available from:

A mailing list, netcdfgroup@unidata.ucar.edu, exists for discussion of the netCDF interface and announcements about netCDF bugs, fixes, and enhancements. For information about how to subscribe, see the URL

Feedback

We appreciate feedback from users of this package. Please send comments, suggestions, and bug reports to support-netcdf@unidata.ucar.edu.