The PIO team is pleased to release version 2.4.2 of the PIO library. This
release includes performance improvements, bug fixes, and more tests. Get
the latest release from the PIO GitHub site:
https://github.com/NCAR/ParallelIO.
What is PIO?
The Parallel IO library (PIO) is a high-level parallel I/O C/Fortran
library for structured grid applications. PIO provides a netCDF-like API,
and allows users to designate some subset of processors to perform IO.
Computational code calls netCDF-like functions to read and write data, and
PIO uses the IO processors to perform all necessary IO.
PIO also supports the creation of multiple computation components, each
containing many processors, and one shared set of IO processors. The
computational components can perform write operation asynchronously, and
the IO processors will take care of all storage interaction.
See the PIO web site for more information: http://ncar.github.io/ParallelIO/
New This ReleaseChanges in Memory Use
- This release contains changes to cause many internal PIO maps to be
stored on the heap, not the stack. This will prevent stack overflow. This
work is not yet complete, a workaround is to increase the stack allocation
when running PIO programs.
- This release changes the cmake build to use malloc instead of the bget
code for memory allocation. The bget code was intended to improve
performance but no longer seems to do so, and will be removed. (The
autotools build always used malloc, never bget.)
Autotools Build System
- The autotools build system can now build and test the Fortran library,
with configure option --enable-fortran.
- The autotools build system can now produce the doxygen-based
documentation.
- Bug fixes
- In async mode, different compute groups were overwriting each
others msg integer when sending messages. This has been corrected.
- An error in computing the largest block size for data transfers
caused communications to occur in smaller than optimal chunks. This has
been corrected.
- init_decomp for the box rearranger has been optimized by
aggregating some small messages
More Tests
With this release our travis/GitHub continuous integration testing has
been upgraded to include both C and Fortran libraries, with both autotools
and cmake build systems. Travis builds are also done with the GNU memory
sanitizer turned on, to find memory leaks.
Required Libraries
We recommend always using the latest releases of netCDF and pnetcdf.
This release requires:
- netcdf-4.6.1 or newer.
- pnetcdf-1.9.0 or newer (unless PIO is built without pnetcdf support).
- If netCDF is built with HDF5 support, then HDF5-1.10.4 is required.
Previous versions of HDF5 have a bug in parallel collective I/O which is
triggered by a PIO unit test.