NetCDF for Developers and Data Providers Russ Rew, UCAR Unidata ICTP Advanced School on High Performance and Grid Computing 14 April 2011.

Slides:



Advertisements
Similar presentations
Reading HDF family of formats via NetCDF-Java / CDM
Advertisements

Recent Work in Progress
The NCAR Command Language (NCL) and the NetCDF Data Format Research Tools Presentation Matthew Janiga 10/30/2012.
A Common Data Model In the Middle Tier Enabling Data Access in Workflows … HDF/HDF-EOS Workshop XIV September 29, 2010 Doug Lindholm Laboratory for Atmospheric.
Streaming NetCDF John Caron July What does NetCDF do for you? Data Storage: machine-, OS-, compiler-independent Standard API (Application Programming.
® OGC Web Services Initiative, Phase 9 (OWS-9): Innovations Thread - OPeNDAP James Gallagher and Nathan Potter, OPeNDAP © 2012 Open Geospatial Consortium.
The Future of NetCDF Russ Rew UCAR Unidata Program Center Acknowledgments: John Caron, Ed Hartnett, NASA’s Earth Science Technology Office, National Science.
Making earth science data more accessible: experience with chunking and compression Russ Rew January rd Annual AMS Meeting Austin, Texas.
NetCDF An Effective Way to Store and Retrieve Scientific Datasets Jianwei Li 02/11/2002.
Connecting HPIO Capabilities with Domain Specific Needs Rob Ross MCS Division Argonne National Laboratory
Активное распределенное хранилище для многомерных массивов Дмитрий Медведев ИКИ РАН.
NetCDF Ed Hartnett Unidata/UCAR
Introduction to NetCDF Russ Rew, UCAR Unidata ICTP Advanced School on High Performance and Grid Computing 13 April 2011.
Unidata TDS Workshop THREDDS Data Server Overview October 2014.
Status of netCDF-3, netCDF-4, and CF Conventions Russ Rew Community Standards for Unstructured Grids Workshop, Boulder
Developing a NetCDF-4 Interface to HDF5 Data
OPeNDAP and the Data Access Protocol (DAP) Original version by Dave Fulker.
EARTH SCIENCE MARKUP LANGUAGE “Define Once Use Anywhere” INFORMATION TECHNOLOGY AND SYSTEMS CENTER UNIVERSITY OF ALABAMA IN HUNTSVILLE.
NetCDF-4 The Marriage of Two Data Formats Ed Hartnett, Unidata June, 2004.
1 High level view of HDF5 Data structures and library HDF Summit Boeing Seattle September 19, 2006.
Unidata’s TDS Workshop TDS Overview – Part II October 2012.
HDF5 A new file format & software for high performance scientific data management.
DM_PPT_NP_v01 SESIP_0715_AJ HDF Product Designer Aleksandar Jelenak, H. Joe Lee, Ted Habermann Gerd Heber, John Readey, Joel Plutchak The HDF Group HDF.
A Metadata Based Approach For Supporting Subsetting Queries Over Parallel HDF5 Datasets Vignesh Santhanagopalan Graduate Student Department Of CSE.
Unidata TDS Workshop TDS Overview – Part I XX-XX October 2014.
Unidata’s Common Data Model John Caron Unidata/UCAR Nov 2006.
February 2-3, 2006SRB Workshop, San Diego P eter Cao, NCSA Mike Wan, SDSC Sponsored by NLADR, NFS PACI Project in Support of NCSA-SDSC Collaboration Object-level.
NcML Aggregation vs Feature Collections. NcML functionality 1.Modify the objects found in CDM files – Especially Attributes – Don’t have to rewrite the.
NetCDF-4 and Parallel I/O GSFC, Nov 20,2008 Ed Hartnett.
NetCDF for High Performance Computing Introduction to NetCDF What is netCDF? NetCDF Data Models How we think of data. NetCDF Software Libraries Using.
Mid-Course Review: NetCDF in the Current Proposal Period Russ Rew
Accomplishments and Remaining Challenges: THREDDS Data Server and Common Data Model Ethan Davis Unidata Policy Committee Meeting May 2011.
The netCDF-4 data model and format Russ Rew, UCAR Unidata NetCDF Workshop 25 October 2012.
ICPP 2012 Indexing and Parallel Query Processing Support for Visualizing Climate Datasets Yu Su*, Gagan Agrawal*, Jonathan Woodring † *The Ohio State University.
Integrated Grid workflow for mesoscale weather modeling and visualization Zhizhin, M., A. Polyakov, D. Medvedev, A. Poyda, S. Berezin Space Research Institute.
Project 4 : SciDAC All Hands Meeting, September 11-13, 2002 A. Choudhary, W. LiaoW. Gropp, R. Ross, R. Thakur Northwestern UniversityArgonne National Lab.
Unidata TDS Workshop THREDDS Data Server Overview
Accessing Remote Datasets using the DAP protocol through the netCDF interface. Dr. Dennis Heimbigner Unidata netCDF Workshop August 3-4, 2009.
Advanced Utilities Extending ncgen to support the netCDF-4 Data Model Dr. Dennis Heimbigner Unidata netCDF Workshop August 3-4, 2009.
Recent developments with the THREDDS Data Server (TDS) and related Tools: covering TDS, NCML, WCS, forecast aggregation and not including stuff covered.
NetCDF Data Model Issues Russ Rew, UCAR Unidata NetCDF 2010 Workshop
Unidata’s Common Data Model and the THREDDS Data Server John Caron Unidata/UCAR, Boulder CO Jan 6, 2006 ESIP Winter 2006.
Unidata’s TDS Workshop TDS Overview – Part I July 2011.
Remote Data Access with OPeNDAP Dr. Dennis Heimbigner Unidata netCDF Workshop October 25, 2012.
CCGrid, 2012 Supporting User Defined Subsetting and Aggregation over Parallel NetCDF Datasets Yu Su and Gagan Agrawal Department of Computer Science and.
The HDF Group Introduction to netCDF-4 Elena Pourmal The HDF Group 110/17/2015.
Parallel I/O Performance Study and Optimizations with HDF5, A Scientific Data Package MuQun Yang, Christian Chilan, Albert Cheng, Quincey Koziol, Mike.
NetCDF-4: Software Implementing an Enhanced Data Model for the Geosciences Russ Rew, Ed Hartnett, and John Caron UCAR Unidata Program, Boulder
NetCDF and Scientific Data Durability Russ Rew, UCAR Unidata ESIP Federation Summer Meeting
Advances in the NetCDF Data Model, Format, and Software Russ Rew Coauthors: John Caron, Ed Hartnett, Dennis Heimbigner UCAR Unidata December 2010.
GIS for Atmospheric Sciences and Hydrology By David R. Maidment University of Texas at Austin National Center for Atmospheric Research, 6 July 2005.
Distributed Data Servers and Web Interface in the Climate Data Portal Willa H. Zhu Joint Institute for the Study of Ocean and Atmosphere University of.
Parallel I/O Performance Study and Optimizations with HDF5, A Scientific Data Package Christian Chilan, Kent Yang, Albert Cheng, Quincey Koziol, Leon Arber.
NetCDF: Data Model, Programming Interfaces, Conventions and Format Adapted from Presentations by Russ Rew Unidata Program Center University Corporation.
Update on Unidata Technologies for Data Access Russ Rew
NcBrowse: A Graphical netCDF File Browser Donald Denbo NOAA-PMEL/UW-JISAO
Utilities for netCDF-4 Dr. Dennis Heimbigner Unidata Advanced netCDF Workshop July 25, 2011.
Unidata Infrastructure for Data Services Russ Rew GO-ESSP Workshop, LLNL
NetCDF Data Model Details Russ Rew, UCAR Unidata NetCDF 2009 Workshop
Other Projects Relevant (and Not So Relevant) to the SODA Ideal: NetCDF, HDF, OLE/COM/DCOM, OpenDoc, Zope Sheila Denn INLS April 16, 2001.
NetCDF-Java version 2.2 Common Data Model John Caron Unidata/UCAR Dec 10, 2004.
WWW and HTTP King Fahd University of Petroleum & Minerals
NetCDF 3.6: What’s New Russ Rew
Plans for an Enhanced NetCDF-4 Interface to HDF5 Data
Efficiently serving HDF5 via OPeNDAP
Web App vs Mobile App.
Unidata Advanced netCDF Workshop
Status for Endeavor 6: Improved Scientific Data Access Infrastructure
Accessing Remote Datasets through the netCDF interface.
NCL variable based on a netCDF variable model
Presentation transcript:

NetCDF for Developers and Data Providers Russ Rew, UCAR Unidata ICTP Advanced School on High Performance and Grid Computing 14 April 2011

April 14, Overview Background and motivation What is netCDF? Data models Utilities: ncdump, ncgen, nccopy Exercises Application Programming Interfaces (API’s) Remote access and OPeNDAP Chunking and compression Parallel I/O April 11, 2011NetCDF for developers2

3 April 14, 2011 April 11, 2011NetCDF for developers3 Application Programming Interfaces (API’s)

April 14, Programming interfaces to netCDF data NetCDF C interface was first API, developed in 1988 Fortran-77 interface added as a thin layer over C library Interfaces for Java, Perl, and first C++ library developed at Unidata Collaborated on a Fortran-90 interface Other contributed C-based interfaces include Python, Perl, Ruby, NCL, Matlab, IDL, R, Objective C, Ada, and new C++ API for netCDF-4 Java is most advanced netCDF API, best for use on servers April 11, 2011NetCDF for developers5 All netCDF APIs are currently implemented over either the C or Java library.

April 14, The C API Core library on which all non-Java APIs are built Strengths: -Well-documented: C Users Guide, man pages for reference -Comprehensively tested when library built from source -Good support: answers for many questions available -Many users: one of the most widely used netCDF interfaces. -Type-safe interfaces avoid “void *” arguments and catch compile- time errors -The ncgen utility can generate C code from CDL April 11, 2011NetCDF for developers6

April 14, C example for reading data April 11, 2011NetCDF for developers7 #include... /* Handle errors by printing an error message and exiting */ #define ERR(e) {printf("Error: %s\n", nc_strerror(e)); exit(ERRCODE);}... /* netCDF file ID and variable ID */ int ncid, varid; /* array into which we will read values of 2D netCDF variable */ double rh_array[NLAT][NLON];... /* Open file with read-only access, indicated by NC_NOWRITE flag */ if ((retval = nc_open("foo.nc", NC_NOWRITE, &ncid))) ERR(retval); /* Get the id of the variable named "rh" */ if ((retval = nc_inq_varid(ncid, "rh", &varid))) ERR(retval); /* Read variable "rh" as doubles, rh_array must be big enough! */ if ((retval = nc_get_var_double(ncid, varid, &rh_array[0][0]))) ERR(retval); /* Close the file, freeing all resources. */ if ((retval = nc_close(ncid))) ERR(retval); #include... /* Handle errors by printing an error message and exiting */ #define ERR(e) {printf("Error: %s\n", nc_strerror(e)); exit(ERRCODE);}... /* netCDF file ID and variable ID */ int ncid, varid; /* array into which we will read values of 2D netCDF variable */ double rh_array[NLAT][NLON];... /* Open file with read-only access, indicated by NC_NOWRITE flag */ if ((retval = nc_open("foo.nc", NC_NOWRITE, &ncid))) ERR(retval); /* Get the id of the variable named "rh" */ if ((retval = nc_inq_varid(ncid, "rh", &varid))) ERR(retval); /* Read variable "rh" as doubles, rh_array must be big enough! */ if ((retval = nc_get_var_double(ncid, varid, &rh_array[0][0]))) ERR(retval); /* Close the file, freeing all resources. */ if ((retval = nc_close(ncid))) ERR(retval);

April 14, The Fortran-90 API Provides current Fortran support for modelers and scientists Strengths: -Well-documented: Fortran-90 Users Guide, man pages for reference -Overloads var_put and var_get functions for all types and shapes -Optional arguments simplify API -Many users: one of the most widely used netCDF interfaces Other characteristics -Currently implemented in Fortran-90 as thin layer on Fortran-77 library -No ncgen utility support (yet) for generating F90 code from CDL April 11, 2011NetCDF for developers8

April 14, Fortran-90 API example for reading data April 11, 2011NetCDF for developers9 use netcdf... ! check(status) function prints error message and exits... ! netCDF ID for the file and data variable integer :: ncid, varid ! array into which we will read values of 2D netCDF variable double rh_array[NLON][NLAT] ! reversed index order from CDL... ! Open file with read-only access, indicated by NF90_NOWRITE flag call check( nf90_open("foo.nc", NF90_NOWRITE, ncid) ) ! Get the id of the variable named "rh" call check( nf90_inq_varid(ncid, "rh", varid) ) ! Read whole variable "rh" as double, rh_array must be big enough! call check( nf90_get_var(ncid, varid, rh_array) )... ! Close the file, freeing all resources. call check( nf90_close(ncid) ) use netcdf... ! check(status) function prints error message and exits... ! netCDF ID for the file and data variable integer :: ncid, varid ! array into which we will read values of 2D netCDF variable double rh_array[NLON][NLAT] ! reversed index order from CDL... ! Open file with read-only access, indicated by NF90_NOWRITE flag call check( nf90_open("foo.nc", NF90_NOWRITE, ncid) ) ! Get the id of the variable named "rh" call check( nf90_inq_varid(ncid, "rh", varid) ) ! Read whole variable "rh" as double, rh_array must be big enough! call check( nf90_get_var(ncid, varid, rh_array) )... ! Close the file, freeing all resources. call check( nf90_close(ncid) )

April 14, Language independence The netCDF data model and format are language- independent. -Data written from any language interface can be read from any other language interface Fortran API uses Fortran dimension row-major order, 1-based indexing Unlike netCDF, CDL is not quite language neutral April 11, 2011NetCDF for developers10 ! time slice real rh(lon, lat) ; ! time slice real rh(lon, lat) ; variables: float rh(time, lat, lon) ; CDL Fortran

April 14, Equivalent examples from various APIs Examples of complete sample programs for writing and reading netCDF data from various language interfaces are available from the netCDF program examples page April 11, 2011NetCDF for developers11 Fortran-77 Perl MATLAB

April 14, Java netCDF library architecture April 11, 2011NetCDF for developers12 NetcdfDataset Application Scientific Feature Types I/O service provider GRIB GINI NIDS NetcdfFile Nexrad DMSP OPeNDAP THREDDS Catalog.xml NetCDF-3 HDF5 CoordSystem Builder Datatype Adapter NcML NetCDF-4...

April 14, C netCDF library architecture April 11, 2011NetCDF for developers12

13 April 14, 2011 April 11, 2011NetCDF for developers13 Remote access and OPeNDAP

April 14, Alternatives for remote data access Whole file access -ftp, scp, sftp, http for “small” (< 10 GB) files -tar for directories -gridFTP or Globus Online for large files: fast, parallel, requires certificate Subset access -OPeNDAP (open network data access protocol) -Open Geospatial Consortium services: WCS, WMS, WFS, … -Database queries April 11, 2011NetCDF for developers14

April 14, When is subset access important? For remote accesses to small parts of large files -A few variables out of many -A small geographic region from a global dataset -A small time range from a long time series When visualizing or analyzing data subsets -One 2D level of atmosphere or ocean -One cross section of multidimensional data When files are archived at a granularity too large for use or downloading April 11, 2011NetCDF for developers15

April 14, What are and DAP? DAP is a widely supported data access protocol for accessing remote science data over http The standard and reference client/server software are maintained by the OPeNDAP organization DAP was designed for accessing a wide variety of data sources and formats “DAP” and “OPeNDAP” are often used interchangeably April 11, 2011NetCDF for developers16

April 14, OPeNDAP and netCDF Unidata has merged OPeNDAP client access into both Java- and C-based netCDF libraries. This supports transparent remote access to DAP Data Servers through the netCDF API. Remote access allows any application linked to the netCDF library to retrieve subsets of data stored on DAP servers across the Internet. Only the minimal amount of needed data will be accessed -DAP can be much faster than whole file access, such as FTP April 11, 2011NetCDF for developers17

April 14, DAP client-server architecture DAP data access is analogous to accessing a web page through a web browser April 11, 2011NetCDF for developers18 Web Server Web Browser URL Request HTML (Web Page) Response DAP Server DAP Client (DAP) URL Request DAP Formatted Data Response Application Code (e,g. ncdump) netCDF library DAP library

April 14, Specifying a DAP data source Use a URL that refers to the DAP server containing the data Used in place of a file name in application or netCDF API call Example for whole file: Example for 3 variables out of file Example for subarray of one variable When used in command-line, URL should usually be quoted: ncdump " " April 11, 2011NetCDF for developers19 DAP Server DAP Client (DAP) URL Request DAP Data Response Application Code (e,g. ncdump) netCDF library DAP library …/data/nc/3fnoc.nc/data/nc/3fnoc.nc test.opendap.org u u u u various formats!

20 April 14, 2011 April 11, 2011NetCDF for developers20 Chunking and compression

April 14, Motivation for chunking Problem: reading a small amount of data along the wrong direction in a multidimensional variable can be very slow: April 11, 2011NetCDF for developers21

April 14, Motivation for chunking Solution: storing the data in "chunks" along each dimension in a multidimensional variable makes access along any dimension similar April 11, 2011NetCDF for developers22

April 14, Example: accessing cross-sections April 11, 2011NetCDF for developers23 “Toy” example: accessing a 6 x 6 x 8 array on a system with small disk blocks If array is stored contiguously, then (ignoring caching) number of disk accesses needed to -read a single x,y 2D cross-section: 1 -read a single x,z or y,z 2D cross-section: 8 -read whole array using x,y slices: 8 -read whole array using x,z or y,z slices: 48 -read a single 1D vector along x or y axis: 1 -read a single 1D vector along z axis: 8 -read whole array using 1D vectors along x or y axis: 8 -read whole array using 1D vectors along z axis: 288 Contiguous same as 6 x 6 x 1 chunks, try 3 x 3 x 4 chunks … z x y

April 14, Accessing cross-sections with chunking April 11, 2011NetCDF for developers24 Same data: 6 x 6 x 8 array If array is stored using 3 x 3 x 4 chunks, then number of disk accesses needed to -read a single x,y 2D cross-section: 4 -read a single x,z or y,z 2D cross-section: 4 -read whole array using x,y slices: 32 -read whole array using x,z or y,z slices: 32 -read a single 1D vector along x or y axis: 2 -read a single 1D vector along z axis: 2 -read whole array using 1D vectors on x or y axis: 96 -read whole array using 1D vectors along z axis: 72 x y z

April 14, Accessing cross-sections with chunking April 11, 2011NetCDF for developers25 Same data: 6 x 6 x 8 array x y z Access Contiguous (disk accesses) Chunking (disk accesses) 2D x,y cross-section14 2D x,z or y,z cross-section84 3D array using x,y slices832 3D array using x,z or y,z slices4832 1D vector along x or y axis12 1D vector along z axis82 3D array using x or y vectors896 3D array using z vectors28872

April 14, Actual timings accessing cross-sections with chunking April 11, 2011NetCDF for developers x 432 x 432 array of floats with chunk sizes of 36 x 36 x 36 x y z AccessContiguous (seconds) Chunking (seconds) Slowdown or speedup 2D x,y cross-section write x slower 2D x,z cross-section write x faster 2D y,z cross-section write x faster 2D x,y cross-section read x slower 2D x,z cross-section read x faster 2D y,z cross-section read x faster Fast accesses slow down a little, slow accesses speed up a lot

April 14, Benefits of chunking As a general principle, organize data for readers, not writer -Chunking should match most common access patterns -Chunking may also improve compression Chunked storage can provide significant performance benefits -Allows efficient access to multidimensional data along multiple axes -Default chunking parameters make access performance similar along different dimensions -In netCDF-4 (with HDF5 storage) variables may be chunked independently with custom chunk sizes -Can improve I/O performance for large arrays and compressed variables April 11, 2011NetCDF for developers26

April 14, Compression: why not just use zip? Unix utilities are available for compressing whole files, e.g. bzip2, gzip, zip, compress. Why not just use one of those? -Accessing data from a compressed file requires uncompressing whole file first -So accessing a small amount of data from a large compressed file can be very slow -Changing one value in a compressed file requires uncompressing it, writing the new value, and recompressing it Solution: chunking and per-variable compression April 11, 2011NetCDF for developers27

April 14, Compression in netCDF-4 Readers access data from compressed variables transparently, without needing to know they are compressed Compressed variables are stored with chunked storage Each chunk is compressed or uncompressed independently Permits efficient access to small subsets of a large compressed variable without uncompressing entire variable Per-variable chunk caches keep recently accessed chunks uncompressed Better compression can be achieved with custom chunking. -example: horizontal layers of the atmosphere for a variable that is fairly uniform within a layer, such as temperature -Per-variable compression means variables may be compressed independently April 11, 2011NetCDF for developers28

April 14, Benefits of netCDF-4 classic model format What is the netCDF -4 classic model format? -Uses classic data model for simplicity, compatibility -Uses netCDF-4 (HDF5-based) storage for performance features This format has become popular for several reasons: -Easy to use: specify format only in netCDF create call -Features like chunking, compression available to writers -Data written in this format can be read transparently by old programs, after relinking to new library Supports easier transition from netCDF-3 April 11, 2011NetCDF for developers29

31 April 14, 2011 April 11, 2011NetCDF for developers30 Parallel I/O

April 14, Why parallel I/O? Gets around some input/output bottlenecks in multi-processor systems Lets each processor read and write data independently April 11, NetCDF for developers

April 14, What is parallel I/O? A parallel I/O file system is required for much improvement in I/O throughput NetCDF-4 works with the Message Passing Interface, version 2 (MPI2) Any supercomputer will have an MPI2 library For netCDF testing we use the MPICH2 libraryMPICH2 library April 11, 2011NetCDF for developers32

April 14, The Argonne parallel-netCDF package parallel-netcdf (formerly "pnetcdf") from Argonne Labs and Northwestern University can be used for parallel I/O with classic netCDF data.parallel-netcdf Not Unidata software, but well-tested and maintained Uses MPI I/O to perform parallel I/O, a complete rewrite of the core C library using MPI I/O Implements different API from netCDF, making portability with other netCDF code a problem However, netCDF-4 can now use the parallel netCDF library for classic and 64-bit offset files using parallel I/O Use the NC_PNETCDF flag (or NF90_PNETCDF for Fortran): April 11, 2011NetCDF for developers33 if (nc_create_par(file_name, NC_PNETCDF, mpicomm, info, &ncid)) ERR; if (nc_create_par(file_name, NC_PNETCDF, mpicomm, info, &ncid)) ERR;

April 14, Parallel I/O in netCDF-4 Provides the parallel I/O features of HDF5 with a netCDF API Allows n processes on m processors to read and write netCDF data, where n and m are integers usually < 10K Requires a library implementing MPI2, for example MPICH2 HDF5 must be built with --enable-parallel Typically CC environment variable is set to mpicc, and FC to mpifc. You must build HDF5 and netCDF-4 with same compiler and compiler options. The netCDF configure script will detect the parallel capability of HDF5 and build the netCDF-4 parallel I/O features automatically. For parallel applications you must include "netcdf_par.h" before netcdf.h. Parallel tests output can tell you a lot about your parallel platform. April 11, 2011NetCDF for developers34

April 14, Using parallel I/O in netCDF-4 Special nc_create_par and nc_open_par functions are used to create/open a netCDF file. The files they open are normal NetCDF-4/HDF5 files, but these functions also take MPI parameters. Parallel access is not a characteristic of data file, but the way it was opened. April 11, 2011NetCDF for developers35 external int nc_create_par(const char *path, int cmode, MPI_Comm comm, MPI_Info info, int *ncidp); external int nc_open_par(const char *path, int mode, MPI_Comm comm, MPI_Info info, int *ncidp); external int nc_create_par(const char *path, int cmode, MPI_Comm comm, MPI_Info info, int *ncidp); external int nc_open_par(const char *path, int mode, MPI_Comm comm, MPI_Info info, int *ncidp);

April 14, Collective and independent operations Some netCDF operations are collective (must be done by all processes at the same time) Others are independent (can be done by any process at any time) All netCDF metadata writing operations are collective. That is, all creation of groups, types, variables, dimensions, or attributes. Data reads and writes may be independent (the default) or collective. To make writes to a variable collective, call the nc_var_par_access function: April 11, 2011NetCDF for developers36 if( nc_var_par_access(ncid, varid, NC_COLLECTIVE) ) ERR; if( nc_var_par_access(ncid, varid, NC_COLLECTIVE) ) ERR;

38 April 14, 2011 Conclusion Data providers may begin to use compression/chunking with confidence that most users and software can read it transparently, after relinking with netCDF-4 Developers may adapt software to netCDF-4 format by relinking Developers may adapt software to enhanced data model incrementally, with examples that such adaptation is practical Upgrading software to make use of higher-level abstractions of netCDF- 4 enhanced data model has significant benefits -Data providers can use more natural representation of complex data semantics -More natural conventions become possible -End users can access other types of data through netCDF APIs As we keep pushing common tasks into libraries, scientists can focus on doing science instead of data management 38

39 April 14, 2011 April 11, 2011NetCDF for developers37 Thank you!