Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
TYPE: new feature KEYWORDS: parallel netcdf4 SOURCE: Ted Mansell (NOAA/National Severe Storms Lab) DESCRIPTION OF CHANGES: This PR adds an I/O option to use the new netcdf capability in 4.7.4 (and later versions) to write both in parallel and with variable compression for the same file. Versions of pnetcdf permitted parallel I/O, but did not permit standard HDF5 compression. A new I/O library directory, `external/io_netcdfpar`, has been added that is modeled on the similar `external/io_netcdf` directory. Users should see the file doc/README.netcdf4par for details on configuring and running. In a nutshell, steps to use this feature: 1. This capability to use HDF5 compression and to have parallel I/O (similar to pnetcdf) requires NetCDF v4.7.4 or later. 2. The NetCDF library must be built with MPI. 3. Once the NetCDF library / module is chosen and the NETCDF env variable is correctly pointing to the right location, then prior to the `configure` step, the user sets a new environment variable. For example, in csh or bash `setenv NETCDFPAR $NETCDF` or `export NETCDFPAR=$NETCDF`, respectively. 4. Set the io_form to 13 to use the parallel compressed netcdf option (usually just for the model output or restarts). 5. This I/O option requires activating the NOCOLONS switch (which is why only model output or restarts are recommended, since metgrid files have colons imbedded in the file names). LIST OF MODIFIED FILES: M Makefile M Registry/Registry.EM_COMMON M arch/Config.pl M arch/md_calls.inc M arch/postamble M arch/preamble M configure A doc/README.netcdf4par M external/Makefile A external/io_netcdfpar/Makefile A external/io_netcdfpar/diffwrf.F90 A external/io_netcdfpar/ext_ncdpar_get_dom_ti.code A external/io_netcdfpar/ext_ncdpar_get_var_td.code A external/io_netcdfpar/ext_ncdpar_get_var_ti.code A external/io_netcdfpar/ext_ncdpar_put_dom_ti.code A external/io_netcdfpar/ext_ncdpar_put_var_td.code A external/io_netcdfpar/ext_ncdpar_put_var_ti.code A external/io_netcdfpar/field_routines.F90 A external/io_netcdfpar/module_wrfsi_static.F90 A external/io_netcdfpar/transpose.code A external/io_netcdfpar/wrf_io.F90 M frame/md_calls.m4 M frame/module_io.F M share/mediation_integrate.F M share/module_io_domain.F M share/output_wrf.F M share/wrf_ext_write_field.F TESTS CONDUCTED: 1. Tested on lustre file system (cray) with domain sizes up to about 700x700. Will leave the existing chunking as as the initial implementation. 2. Parallel I/O with compression successfully runs on the NCAR cheyenne system, a GPFS file system. The following were set up for modules during the build and within the job script: ``` module purge module load intel module load ncarcompilers module load mpt module load netcdf-mpi module load ncarenv ``` 3. The tests on cheyenne worked with both GNU/10.1.0 and Intel/19.1.1 4. Jenkins testing is OK. 5. Additional information is now output at the end of the `configure` step regarding I/O options: ``` NetCDF version: 4.8.1 Enabled NetCDF-4/HDF-5: yes NetCDF built with PnetCDF: no Enabled NetCDF parallel: yes Using parallel NetCDF via NETCDFPAR option ``` RELEASE NOTE: Added the ability to write compressed NetCDF4 files in parallel via NetCDF 4.7.4 (and later). The performance is slower than pnetcdf, but can be notably faster than regular NetCDF4 on parallel file systems. As expected, the compression provides files significantly smaller than pnetcdf generates.
- Loading branch information
e018624
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@whatheway This is better posted to the Forum: https://forum.mmm.ucar.edu/.