Sponsor:
PnetCDF development was sponsored by the Scientific Data Management Center (SDM) under the DOE program of Scientific Discovery through Advanced Computing (SciDAC). It was also supported in part by National Science Foundation under the SDCI HPC program award numbers OCI-0724599 and HECURA program award numbers CCF-0938000.Project Team Members:
Northwestern University
- Wei-keng Liao
- Alok Choudhary
- Kai-Yuan Hou (graduate student)
- Seung Woo Son(formerly a postdoc, now an Assistant Professor at UMass Lowell)
- Kui Gao (formerly a postdoc, now Dassault Systèmes Simulia Corp.
- Jianwei Li (since graduated, now Bloomberg L.P.)
Argonne National Laboratory
- Rob Latham
- Rob Ross
- Rajeev Thakur
- William Gropp (now UIUC)
PnetCDF Source Code Download
The latest stable release of PnetCDF is version 1.12.3.
Release of PnetCDF version 1.12.3 (February 21, 2022)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.3 MB | pnetcdf-1.12.3.tar.gz | 097041f8f102c7c55d703750b576ae48460aa3a3 |
Changes from version 1.12.2 are summarized in file RELEASE_NOTES.
Release of PnetCDF version 1.12.2 (January 15, 2021)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.3 MB | pnetcdf-1.12.2.tar.gz | 3ab82ea878e321f6c0fd9afb44c8707949485d09 |
Changes from version 1.12.1 are summarized in file RELEASE_NOTES.
Release of PnetCDF version 1.12.1 (December 9, 2019)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.3 MB | pnetcdf-1.12.1.tar.gz | e92580824534f2563c6cad6e128e43c89519e03d |
Changes from version 1.12.0 are summarized in file RELEASE_NOTES.
Release of PnetCDF version 1.12.0 (September 30, 2019)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.3 MB | pnetcdf-1.12.0.tar.gz | 0b815d623a7a63631d6466d8df67be433e78cb7b |
Changes from version 1.11.2 are summarized in file RELEASE_NOTES.
Release of PnetCDF version 1.11.2 (May 13, 2019)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.2 MB | pnetcdf-1.11.2.tar.gz | cf310a037846a5722c05525b0a77273bea8059a0 |
Changes from version 1.11.1 are summarized in file RELEASE_NOTES.
Release of PnetCDF version 1.11.1 (April 12, 2019)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.2 MB | pnetcdf-1.11.1.tar.gz | 579697e5e1455ce8c2a14ee7e10a9f36c49c225f |
Changes from version 1.11.0 are summarized in file RELEASE_NOTES.
Release of PnetCDF version 1.11.0 (December 19, 2018)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.1 MB | pnetcdf-1.11.0.tar.gz | a13fd24953abce1f3fd7aa94fd66f1b9895182de |
Changes from version 1.10.0 are summarized in file RELEASE_NOTES.
Release of PnetCDF version 1.10.0 (July 2, 2018)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.0 MB | parallel-netcdf-1.10.0.tar.gz | 9ac144f305e14ae6306f5e51af1b4329bfb86480 |
Changes from version 1.9.0 are summarized in file RELEASE_NOTES.
Release of PnetCDF version 1.9.0 (December 19, 2017)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 1.9 MB | parallel-netcdf-1.9.0.tar.gz | 0978ae5cdaba925e73ced2b550fc02a132b2c5ed |
Changes from version 1.8.1 are summarized in ReleaseNotes-1.9.0
Release of PnetCDF version 1.8.1 (January 28, 2017)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 1.2 MB | parallel-netcdf-1.8.1.tar.gz | 2a8179158731f3fa24c9b183b4b1442e8853d229 |
Changes from version 1.8.0 are summarized in ReleaseNotes-1.8.1
Release of PnetCDF version 1.8.0 (December 19, 2016)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 1.2 MB | parallel-netcdf-1.8.0.tar.gz | 825825481aa629eb82f21ca37afff1609b8eeb07 |
bzip2ed | 879 KB | parallel-netcdf-1.8.0.tar.bz2 | ae9662363f1c4a0ee5c2041ebc3ab539865e8b98 |
Release of PnetCDF version 1.7.0 (March 3, 2016)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 1.1 MB | parallel-netcdf-1.7.0.tar.gz | 267eab7b6f9dc78c4d0e6def2def3aea4bc7c9f0 |
bzip2ed | 854 KB | parallel-netcdf-1.7.0.tar.bz2 | 87ab98a75f8498b2f5ef3181d78271b80c3dc99d |
Release of PnetCDF version 1.6.1 (June 1, 2015)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.7 MB | parallel-netcdf-1.6.1.tar.gz | 62a094eb952f9d1e15f07d56e535052604f1ac34 |
bzip2ed | 1.8 MB | parallel-netcdf-1.6.1.tar.bz2 | f4b220ba64c7725d0bc2cff36974f8c8522c0c45 |
Earlier stable release of PnetCDF version 1.6.0 (February 2, 2015)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.7 MB | parallel-netcdf-1.6.0.tar.gz | 191087f01232252dda62c12425dd8f39aee09aff |
bzip2ed | 1.8 MB | parallel-netcdf-1.6.0.tar.bz2 | 6ca30e4d2595b38204d6e06616bb2e01efa3c027 |
Earlier stable release of PnetCDF version 1.5.0 (July 8, 2014)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.6 MB | parallel-netcdf-1.5.0.tar.gz | 27586a39fef85a46cf0732a2c0f72dcbb1537189 |
bzip2ed | 1.7 MB | parallel-netcdf-1.5.0.tar.bz2 | 41ec358878a97132b3bb1d1f67dcef96c492376c |
Earlier stable release of PnetCDF version 1.4.1 (December 23, 2013)
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.5 MB | parallel-netcdf-1.4.1.tar.gz | f2e57b9af78675f9c2a80a64ffb8522c47ea375a |
bzip2ed | 1.6 MB | parallel-netcdf-1.4.1.tar.bz2 | 0839b9789266f8c2be3656d7287f0776b797626f |
Release Notes of Earlier Versions
-------------------------------------------------------------- version 1.4.1 (December 23, 2013)--------------------------------------------------------------
- Bug fix:
- Improve pnetcdf.inc portability for fixed/free-form Fortran programs
- Fortran API syntax changes
- For nfmpi_put_att and nf90mpi_put_att family, the intent modifier for the put buffer arguments are now declared as INTENT(IN).
- For nfmpi_put_var* and nf90mpi_put_var family
- On Big Endian machines, the intent modifier for the put buffer arguments are now declared as INTENT(IN).
- On Little Endian machines, the intent modifier for the put buffer arguments are still declared as INTENT(INOUT). This is because PnetCDF does in-place byte-swap on user's put buffer. If user's buffer is declared as parameter, then segment fault can happen when PnetCDF tries to byte-swap a read-only memory.
- Subfiling
- Subfiling is a new PnetCDF feature that divides a file transparently into several smaller subfiles, each of which stores subarrays in CDF file formats. The file name supplied by the users serves as a master file that contains all metadata about array partitioning information among the subfiles. Because data partitioning is made transparently from users, data accessing is kept the same through the conventional PnetCDF APIs and the master file.
- To enable this feature at configure time, add configure option "--enable-subfiling".
-------------------------------------------------------------- version 1.4.0 (November 17, 2013)
--------------------------------------------------------------
tarball type | size | file | SHA-1 Checksum |
---|---|---|---|
gzipped | 2.5 MB | parallel-netcdf-1.4.0.tar.gz | fa734e62af819cb5ee9f85be61818163f8345a77 |
bzip2ed | 1.6 MB | parallel-netcdf-1.4.0.tar.bz2 | 9ade46852432c940850bc7258e3424688267cbdb |
- New APIs
- Fortran 90 APIs (adopted from netcdf-fortran-4.2). All F90 APIs have prefix name "nf90mpi_". The APIs support function overloading.
- get/put_varn_
for reading/writing a list of subrequests (each is specified by starts[i][ndims] and counts[i][ndims] for subrequest i. ndims is the number of dimension of the variable) to a single variable. - multiple put/get requests with explicit buffer type names: ncmpi_mput_var_type(), ncmpi_mput_var1_type(), ncmpi_mput_vara_type(), ncmpi_mput_vars_type(), ncmpi_mput_varm_type(). Similar for get APIs. "type" is one of the followings: text, schar, uchar, short, ushort, int, uint, long, float, double, longlong, or ulonglong.
- ncmpi_inq_nreqs() reports the number of pending nonblocking requests
- ncmpi_inq_header_size() reports the size of the file header
- ncmpi_inq_header_extent() reports the space currently allocated for the file header, (also the file offset of the first variable)
- ncmpi_inq_put_size() reports the write amount committed by far
- ncmpi_inq_get_size() reports the read amount committed by far
- ncmpi_sync_numrecs() a collective API that can be called in independent data mode to synchronize the number of records in memory across all processes, and update to the file if NC_SHARE is set.
- Syntax change for Fortran put APIs
- intent of buffer argument in all Fortran APIs is changed to inout, as byte-swap might be performed directly on the buffer. This change is for performance consideration. For example, if the buffer is declared as Fortran parameter, then compile will fail.
- New PnetCDF hint
- nc_header_read_chunk_size: PnetCDF reads the file headers in chunks. This hint indicates the chunk size (in bytes). The default is 256 KB.
- New error code
- NC_EINTOVERFLOW reports the error of 4-byte integer overflow. This usually happens due to MPI-IO data type constructor APIs' arguments using 4-byte integers.
- Error codes to report metadata defined inconsistently across processes.
- NC_EMULTIDEFINE_OMODE - create/open mode
- NC_EMULTIDEFINE_DIM_NUM - number of dimensions
- NC_EMULTIDEFINE_DIM_SIZE - size of dimension
- NC_EMULTIDEFINE_DIM_NAME - dimension names
- NC_EMULTIDEFINE_VAR_NUM - number of variables
- NC_EMULTIDEFINE_VAR_NAME - variable name
- NC_EMULTIDEFINE_VAR_NDIMS - variable's number of dimensions
- NC_EMULTIDEFINE_VAR_DIMIDS - variable's dimid
- NC_EMULTIDEFINE_VAR_TYPE - variable's data type
- NC_EMULTIDEFINE_VAR_LEN - variable's size
- NC_EMULTIDEFINE_NUMRECS - number of records
- NC_EMULTIDEFINE_VAR_BEGIN - variable file begin offset
- NC_EMULTIDEFINE_ATTR_NUM - number of attributes
- NC_EMULTIDEFINE_ATTR_SIZE - memory space used by attribute
- NC_EMULTIDEFINE_ATTR_NAME - attribute name
- NC_EMULTIDEFINE_ATTR_TYPE - attribute type
- NC_EMULTIDEFINE_ATTR_LEN - attribute length
- NC_EMULTIDEFINE_ATTR_VAL - attribute value
- New run-time environment variables
- PNETCDF_SAFE_MODE environment variable can be used to enable/disable the internal checking for data/argument consistency across all processes (by calling collective MPI_Allreduce). Set it to 1 to enable the checking. Default is 0, i.e. disabled.
- PNETCDF_HINTS environment variable can be used to pass the I/O hints to
PnetCDF library. Hints include both PnetCDF and MPI-IO hints.
PNETCDF_HINTS is a string of hints separated by ";" and each hint is in
the form of hint=value. E.g.
romio_ds_write=disable;nc_header_align_size=1048576
If this environment variable is set, it overrides any values that were set by using calls to MPI_Info_set in the application code.
- New example programs
- example programs are now categorized into C, F77, and F90 directories
- nonblocking_write.f and nonblocking_write.f90 are the Fortran version of nonblocking_write.c
- put_varn_float.c for using the new APIs ncmpi_put_varn_float_all() put_varn_real.f and put_varn_real.f90 are the Fortran versions
- put_varn_int.c, put_varn_int.f, and put_varn_int.f90, for using the new APIs ncmpi_put_varn_int_all() and nfmpi_put_varn_int_all()
- hints.c, hints.f, and hints.f90 for using PnetCDF hints
- flexible_api.c, flexible_api.f, and flexible_api.f90, for using blocking and nonblocking flexible APIs
- mput.c for using ncmpi_mput_vara_all() to write a series of arbitrary start[] and count[]
- block_cyclic.c, block_cyclic.f, and block_cyclic.f90 are for a *-(block-cyclic) 2D partitioning pattern
- column_wise.c, for a *-cyclic 2D partitioning pattern
- put_vara.c, put_vara.f, and put_var.f90 for using for nfmpi_put_vara_int_all()
- New programs for I/O benchmarks
- benchmarks/C/aggregation.c -- evaluate PnetCDF's performance on I/O aggregation across multiple requests with different data access patterns.
- benchmarks/C/write_block_read_column.c -- writes variables and reads back using different data partitioning patterns
- benchmarks/FLASH-IO -- I/O kernel of FLASH, a reacting hydrodynamics code developed at University of Chicago. This benchmark can be built independently from PnetCDF release.
- New test program
- test/F90 contains test programs adopted from netcdf-fortran-4.2
- test/nf90_test contains test programs adopted from test/nf_test
- testcases/alignment_test.c -- test for header and fixed variable file offset alignments when entering redef mode
- testcases/nonblocking.c -- test nonblocking APIs ncmpi_iput_vara_int() and ncmpi_iget_vara_int()
- testcases/flexible.c -- test flexible API ncmpi_get_vara_int_all() using an MPI derived data type created by MPI_Type_create_hindex()
- test/header/header_consistency.c -- test header inconsistency and see if inconsistent metadata is overwritten by root's
- New semantics for attribute APIs in data mode
The following APIs can modify file header while being called in data mode.
Note that these APIs can only modify existing attributes, rename variables
or dimensions, given that the new attributes and names do not take more
file space than the old ones. Otherwise, these APIs are prohibited in data
mode.
- ncmpi_rename_dim(),
- ncmpi_rename_var(),
- ncmpi_copy_att(),
- ncmpi_rename_att(), and
- ncmpi_put_att_
()
- New synchronization for number of records
- In collective data mode, the number of records cached in memory is
always synchronized across all processes. In independent mode, the value
can be inconsistent, unless ncmpi_sync_numrecs() (a collective API) is
called explicitly. Otherwise, the synchronization will have to wait until
the call to ncmpi_end_indep_data().
Flushing the number of records to file when it is changed used to be delayed until ncmpi_close() or ncmpi_sync() is called. If a strong file consistency is desired, users must enable NC_SHARE mode when opening the file. However, note that in this mode any header change will cause file I/O to flush the dirty header data (not just number of records). For programs that do not change header frequently, enabling NC_SHARE should have no significant performance impact.
This flushing behavior has been changed in 1.4.0 to the following. At the end of collective calls, if the number of records increases, the changed value will be written to the file, no matter if NC_SHARE mode is used or not. This change is to ensure the number of records is up-to-dated in file, in case the application program does not close file (due to crash or programming error). Note this change applies to collective APIs only.
- In collective data mode, the number of records cached in memory is
always synchronized across all processes. In independent mode, the value
can be inconsistent, unless ncmpi_sync_numrecs() (a collective API) is
called explicitly. Otherwise, the synchronization will have to wait until
the call to ncmpi_end_indep_data().
- New optimization: I/O request aggregation
- The original design of nonblocking I/O is to concatenate the fileviews of
individual nonblocking requests and serve them with a single MPI-IO call,
if possible. However, because MPI-IO requires the file displacements of
the flattened fileview be in an monotonically nondecreasing order, the
original approach (in v1.3.1 and prior) divides the nonblocking requests
into groups such that each group abides by this MPI-IO fileview
requirement. Each group is then carried out by a separate MPI-IO call.
Performance can be poor if there are multiple groups and each group's
aggregate access region is non-contiguous in the file.
This revision fixes this problem by 1) sorting the starting offset of all nonblocking requests into a non-decreasing order; 2) dividing the requests into groups (two types of groups are identified: interleaving and non-interleaving); 3) for each non-interleaving group, concatenating fileviews of all requests in the group; 4) for each interleaving group, flattening fileviews of all requests in the group, merging the offset-length pairs, and concatenating them into a new integrated fileview; 5) concatenating the fileviews of all groups into a single one; 6) the final combined fileview is used by a single MPI-IO call to carry out the requests. Performance is expected to be improved as the number of MPI-IO calls is reduced to one.
However, be warned about the additional memory requirement. The additional memory needed for flattening the fileviews might be more than the I/O data itself. For example, a request to accessing a single column of a 2D integer array will result in offset-length pairs, each representing only a 4-byte integer where the C struct in PnetCDF for storing an offset-length pair takes 3*sizeof(MPI_Offset)=24 bytes (offset, length, and I/O buffer pointer).
- The original design of nonblocking I/O is to concatenate the fileviews of
individual nonblocking requests and serve them with a single MPI-IO call,
if possible. However, because MPI-IO requires the file displacements of
the flattened fileview be in an monotonically nondecreasing order, the
original approach (in v1.3.1 and prior) divides the nonblocking requests
into groups such that each group abides by this MPI-IO fileview
requirement. Each group is then carried out by a separate MPI-IO call.
Performance can be poor if there are multiple groups and each group's
aggregate access region is non-contiguous in the file.
- Other updates:
- configure.in and Makefile.in have been revised to detect MPI compilers and other compile options automatically.
- A new configure option "--disable-file-sync" to disable calling file sync. This is to be used when the underlying file system provides data consistency control.
- add build recipe for IBM BGQ (e.g. Vesta/Mira/Cetus @ANL) in README.IBM
- add build recipe for CRAY-XE6, Hopper @NERSC in README.CRAY
- add build recipe for CRAY-XC30, Edison @NERSC in README.CRAY
- add build recipe for Endeavour @ NASA in README.SGI
- add declaration of flexible APIs for Fortran90
- "make testing" now hides most of the stdout. Use "make verbose_testing" for verbose output.
- ncmpidump: add the command-line option "-k" to report the format of netCDF file.
- ncvalid is renamed to ncmpivalid, a tool to validate the structure of netCDF files for conforming with CDF formats.
- Fortran type NFMPI_OFFSET is removed. It was merely a shortcut to integer(KIND=MPI_OFFSET_KIND). Some Fortran 77 compiler does not recognize keyword KIND. In that case, please set MPIF77 to the MPI Fortran 90 compiler, e.g. ./configure MPIF77=mpif90
- configure now automatically checks Fortran module compile flags
- Support additional Fortran netCDF data types: nf_ubyte, nf_ushort, nf_uint, nf_uint64, nf90_ubyte, nf90_ushort, nf90_uint, nf90_uint64.
- Error codes and messages conform with netCDF's
- Bug fixes
- Argument unlimdimid of nfmpi_inq() returns -1 when no unlimited length dimension has been defined (to conform nf_inq()).
- Argument varid of nfmpi_inq_varoffset() is fixed to be the C's varid plus one.
- For collective APIs, many places have been changed to prevent program from hanging if a subset of the processes got errors. The fix will allow all processes participating the MPI collective calls in the PnetCDF, even if errors are detected on a subset of processes.
- set the nonblocking request ID to NULL when the request length is zero
- report error when bogus request IDs are passed in ncmpi_wait
- when entering redef with different alignment hints, fixed-sized variables' file starting offsets will only be changed when it is bigger than the old ones
- Fix some Fortran API intent in/out argument declarations
- ncmpi_def_var is fixed to detect if CDF-5 data types is used on CDF-1 or CDF-2 files. Error code NC_ESTRICTNC3 will return.
-------------------------------------------------------------- This release is primarily a bug-fix release, tidying up a few issues and incorporating some early feedback on our "buffered put" interface (see http://trac.mcs.anl.gov/projects/parallel-netcdf/wiki/BufferedInterface for more information)
- add a new API ncmpi_inq_buffer_usage/nfmpi_inq_buffer_usage for inquiring the current usage of the internal buffer allocated by the "buffered"-put APIs.
- bug fix to make bput APIs properly return error code NC_EINSUFFBUF.
- bug fixes for ncmpidump to avoid residue contents from a previous read when it read beyond EOF.
- bug fixes in the tutorial example codes.
- add more in-line comments for the tutorial example codes.
- add the error string for error code NC_ENOENT.
--------------------------------------------------------------
- Bug fixes in new ncmpidiff tool.
- Small optimization to reduce communication in library.
- Improved documentation, including more test programs and a QuickTutorial.
- Bug fixes in our Fortran90 support.
- Better compatibility with NetCDF-4: no need for a modified pnetcdf.h from Unidata when building NetCDF-4 with PnetCDF support.
- PnetCDF now duplicates the MPI communicator internally, which fixed at least one odd behavior seen in a pnetcdf-using application.
- Improvements to PnetCDF header and variable alignment (see wiki page VariableAlignment).
- Add a checking for file create mode consistency across all processes and an error code for it, NC_ECMODE.
- Bug fix for updating the number of record variables in nonblocking APIs.
- Bug fix for variable starting file offsets when defining multiple large variables (> 232 elements) in one CDF-5 file.
- Add a new configure option that takes environment variable $RM to replace the default "rm" command in all Makefiles.
- Bug fix for nonblocking varm APIs.
- Support for CDF-2's special2 characters in names (variables, attributes, dimensions, etc.)
- Release of the official CDF-5 file format specification (see wiki page CD-5).
- Support for CDF-5 data types: NC_UBYTE, NC_USHORT, NC_UINT, NC_INT64, NC_UINT64, and NF_INT64.
- New C APIs: ncmpi_put_vara_ushort, ncmpi_put_vara_uint, ncmpi_put_vara_longlong, and ncmpi_put_vara_ulonglong. Similarly for var1, var, vars and varm APIs. Also for get and nonblocking APIs.
- New Fortran APIs: nfmpi_put_vars_int8 and similarly for var1, var, vars, varm, get, and nonblocking APIs.
- Add a new error code, NC_ENOTSUPPORT, for not-yet-supported features.
- A new set of buffered put APIs (e.g. ncmpi_bput_vara_float) is added (see BufferedInterface). They make a copy of the user's buffer internally, so the user's buffer can be reused when the call returns. Their usage are similar to the iput APIs.
- Add new error codes for buffered put APIs: NC_ENULLBUF, NC_EPREVATTACHBUF, NC_ENULLABUF, NC_EPENDINGBPUT, and NC_EINSUFFBUF.
- Add new test and example programs for the buffered put APIs.
- The error string returned by ncmpi_strerror() for an undefined error code is updated from "Unknown Error" to "Unknown Error: Unrecognized PnetCDF error code ID" to be more descriptive.
- Remove the use of POSIX error codes: EINVAL, ENOERR, ERANGE, and ENOMEM. They are replaced by NC error codes now: NC_EINVAL, NC_NOERR, NC_ERANGE, and NC_ENOMEM.
- A better translation of MPI-IO error classes to netCDF/PnetCDF error codes. For example, MPI-IO error class MPI_ERR_NO_SUCH_FILE is translated to NC_ENOENT.
- Compatibility note
- In testing with version 11.7 of the Portland Group compiler, some of the Fortran test programs fail to compile if built with pgf77. The tests work if built with the Fortran90 compiler.
--------------------------------------------------------------
- Several bugs fixed, memory leaks reduced,
- Internal housekeeping
- Reduce the places where pnetcdf will call MPI_FILE_SYNC
- A new 'ncmpidiff' utility to compare two datasets in parallel
- Addressed a build failure when compiling with some versions of MVAPICH2. See http://lists.mcs.anl.gov/pipermail/parallel-netcdf/2010-July/001045.html for an example of the build failure.
- If you build this release and still get "undefined reference to 'yyin'", then you have some stale object files. "make clean" and re-build.
- Additional error checking for collective routines
- We have also made API changes to our non-blocking interface. Our non-blocking semantics have been relaxed somewhat, and should be more usable in more situations.
--------------------------------------------------------------
- A new file format, CDF-5, is introduced. This format allows defining large array variables with more than 232 elements.
- A new optimization in parallel-netcdf with this release. If the hint "striping_unit" is set, then PnetCDF will align the start of non-record variables to a multiple of that value.
- A new set of APIs for reading/writing multiple variables. The existing asynchronous APIs have also been improved to enable combination of multiple variable access into fewer I/O requests.
- There is now a simple pnetcdf.F90 module for F90 codes. Please consider this as an "early feedback" version and not a hard guarantee of a fixed F90 API (though we don't expect it to change drastically if at all). This module is generated from the F77 'pnetcdf.inc': thanks to Annette Koontz for the idea.
- The 'ncmpigen' utility can now create "big variable" (CDF-5) files, in addition to the older "big file" (CDF-2) files.
-------------------------------------------------------------- The Parallel-NetCDF developers are quite happy to announce our 1.0.0 release. This release reflects the culmination of several years of work and lots of community feedback.
A brief list of the major changes since 0.9.4:
- Has both the high level and flexible data mode interfaces
- Improved support for many more platforms
- Support for all serial NetCDF access patterns (var, vara, vars, varm) and types (text, char, uchar, schar, short, int, float, long, double)
- Synced up with netcdf-3.6.0
- The usual array of bug fixes and improvements.