Version 2.4.2
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 Release
Changes 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.