
Parallel netCDF (PnetCDF) is a library providing high-performance parallel I/O
while still maintaining file-format compatibility with Unidata's NetCDF,
specifically the CDF and CDF-2 formats. Although NetCDF supports parallel I/O
starting from version 4, the files must be in HDF5 format. PnetCDF is currently
the only choice for carrying out parallel I/O on files that are in classic
formats (CDF-1 and 2).

In addition, PnetCDF supports the CDF-5 file format, an extension of CDF-2,
that supports more data types and allows users to define large dimensions,
attributes, and variables (>2B elements).

NetCDF gives scientific programmers a space-efficient and portable means for
storing data. However, it does so in a serial manner, making it difficult to
achieve high I/O performance. By making some small changes to the NetCDF APIs,
PnetCDF can use MPI-IO to achieve high-performance parallel I/O.

More extensive installation guides can be found in file INSTALL.  Additional
information regarding the contents of the release can be found in
the RELEASE_NOTES file in the top-level directory.  Finally, the PnetCDF web
site,
    http://trac.mcs.anl.gov/projects/parallel-netcdf
contains information on bug fixes and new releases.


Requirements:

    - Parallel-NetCDF relies on MPI-IO.  ROMIO, the most common MPI-IO
      implementation, can make use of a prefix in front of the file name to
      specify the underlying file system and override ROMIO's auto detection. A
      typical prefix would look like "nfs:" or "pvfs2:".  Bear this in mind if
      you use a file name with ':' characters.  In some cases, ROMIO might
      think you are passing in a prefix and will complain about an unsupported
      file system type.  If that happens, add a file-system prefix to your file
      name.   
      
    - To build parallel-netcdf you will need some additional programs:
        - either yacc or bison
	- either lex or flex
      These are usually part of your operating system's development tools.


Note on supporting large files and large variables.

    - Fortran routines will pass in a 64 bit integer for some parameters (those
      corresponding to MPI_Offset type in the C routines).  Declare those
      parameters as 'integer(kind=MPI_OFFSET_KIND)'

    - In places where you might use NF_UNLIMITED to define an unlimited 
      dimension in one of the nfmpi_ routines, use NFMPI_UNLIMITED. 
      NFMPI_UNLIMITED will be defined as the proper type for nfmpi_def_dim, 
      whereas nf_unlimited might be too small. Similarly, for Fortran 90,
      use NF90MPI_UNLIMITED instead of NF90_UNLIMITED.

Please send an email to parallel-netcdf@mcs.anl.gov
