Wednesday, 12 January 2005
A Component Interface to netCDF
The network common data form (netCDF; http://my.unidata.ucar.edu/content/software/netcdf/index.html) is a standard for access of array-oriented data in a platform-independent fashion. NetCDF is widely used throughout the climate/weather/ocean (CWO) community, and has been used in other scientific applications. Multiple language netCDF interfaces have been implemented, including those for Fortran90, Java, Python, Perl Ruby, R, and Matlab. We have constructed a new interface to netCDF—-a component interface. Components are self-contained, independent software units that can be composed into applications using a software framework, a paradigm called component-based software engineering (CBSE). CBSE has been widely used in industry, with the most notable examples being JavaBeans and CORBA. The netCDF component we have crafted adheres to the component specification of the Common Component Architecture (CCA; http://cca-forum.org). CCA provides a component specification that meets the requirements of high-performance scientific computing, namely low intercomponent latency times (on the order of tens of microseconds or less), and support for scientific datatypes (complex numbers, multi-dimensional arrays). CCA components interact via a peer component model under which a component has ports that define services provided by a component (provides ports) and services required by a component from another component (uses ports). Language gaps between interfaces are bridged through the use of a scientific interface definition language (SIDL) and interlanguage glue is automatically generated using the Babel language interoperability tool. CCA has the added advantage that it is interoperable with the Earth System Modeling Framework (ESMF), an emerging application framework for geoscience software. We will describe in greater detail CCA, and the steps necessary to wrap library code to create a CCA component, including describing the library interfaces in SIDL, and component port specification, with netCDF 3.5.1 as a case study. We will discuss in detail how SIDL and Babel can be leveraged to construct with greater ease and confidence interlanguage bindings for netCDF. We will show how this netCDF component can be used in larger CCA applications, in particular how it can be used within a CCA-compliant framework’s GUI for compositional programming. We will discuss future work to create a CCA-complient parallel netCDF (pnetCDF) component, and plans for a CCA component for netCDF 4.0.
Supplementary URL: