@@ -6,6 +6,113 @@ PnetCDF Release Notes
6
6
Version _PNETCDF_VERSION_ (_PNETCDF_RELEASE_DATE_)
7
7
-------------------------------------
8
8
9
+ * New optimization
10
+ + When file header extent size grows, moving the data section to a higher
11
+ file offset has changed to be done in chunks of 16 MB per process.
12
+ See [PR #174](https://github.com/Parallel-NetCDF/PnetCDF/pull/174),
13
+
14
+ * Configure options
15
+ + For PnetCDF developers, the requirement for libtool version has been
16
+ changed to 2.5.4, due to an issue on Mac OS when using OpenMPI. See
17
+ [Issue #155](https://github.com/Parallel-NetCDF/PnetCDF/issues/155),
18
+ [Issue #163](https://github.com/Parallel-NetCDF/PnetCDF/issues/163),
19
+ and [PR #164](https://github.com/Parallel-NetCDF/PnetCDF/pull/164).
20
+
21
+ * New APIs
22
+ + A set of APIs that read the header of a CDL file header and allow users to
23
+ query the metadata defined in the CDL file. These APIs can be useful for
24
+ creating a program (such as an I/O benchmark) based on an output netCDF
25
+ file from another application (a CDL file can be generated by running the
26
+ utility `ncmpidump/ncdump`). See
27
+ [PR #177](https://github.com/Parallel-NetCDF/PnetCDF/pull/177).
28
+ * `cdl_hdr_open()` opens and parses the CDL file's header
29
+ * `cdl_hdr_inq_format()` returns file format version
30
+ * `cdl_hdr_inq_ndims()` returns number of dimensions defined in CDL file
31
+ * `cdl_hdr_inq_dim()` returns metadata of a dimension
32
+ * `cdl_hdr_inq_nvars()` returns number of variables
33
+ * `cdl_hdr_inq_var()` returns metadata of a variable defined in CDL file
34
+ * `cdl_hdr_inq_nattrs()` returns number of attributes of a given variable
35
+ * `cdl_hdr_inq_attr()` returns metadata of an attribute
36
+ * `cdl_hdr_close()` closes the CDL file
37
+ + The CDL Header C Reference Manual is available in
38
+ [cdl_api_guide.md](doc/cdl_api_guide.md). See
39
+ [PR #184](https://github.com/Parallel-NetCDF/PnetCDF/pull/184).
40
+
41
+ * Bug fixes
42
+ + Fix a GCC 15 compilation error. Thanks to Adrian Reber.
43
+ See [PR #179](https://github.com/Parallel-NetCDF/PnetCDF/pull/179).
44
+ + Fix errors when building an RPM. Thanks to Adrian Reber.
45
+ See [PR #178](https://github.com/Parallel-NetCDF/PnetCDF/pull/178).
46
+ + Fix setting of user hint nc_ibuf_size.
47
+ See [PR #161](https://github.com/Parallel-NetCDF/PnetCDF/pull/161).
48
+
49
+ * New example programs
50
+ + examples/C/create_from_cdl.c shows how to call the new CDL header APIs to
51
+ create a netCDF file with the same metadata.
52
+
53
+ * New programs for I/O benchmarks
54
+ + WRF-IO contains an extraction of the I/O kernel of WRF (Weather Research
55
+ and Forecast Model, a weather prediction computer simulation program
56
+ developed at NCAR) that can be used to evaluate the file I/O performance
57
+ of WRF. It's data partitioning pattern is a 2D block-block checkerboard
58
+ pattern, along the longitude and latitude.
59
+ See [PR #165](https://github.com/Parallel-NetCDF/PnetCDF/pull/165)
60
+ and [PR #181](https://github.com/Parallel-NetCDF/PnetCDF/pull/181).
61
+
62
+ * New test program
63
+ + test/cdf/tst_cdl_hdr_parser.c tests the new CDL header APIs.
64
+ + test/testcases/tst_grow_header.c tests header extent growth by re-entering
65
+ the define mode multiple times and add more fix-sized and record variables.
66
+
67
+ * Clarifications about of PnetCDF hints
68
+ + There are three ways in PnetCDF for user to set hints to align the starting
69
+ file offset for the data section (header extent) and record variable
70
+ section.
71
+ 1. through a call to API `nc_header_align_size` by setting arguments of
72
+ `h_minfree`, `v_align`, `v_minfree`, and `r_align`.
73
+ 2. through an MPI info object passed to calls of `ncmpi_create()` and
74
+ `ncmpi_open()`. Hints are `nc_header_align_size`, `nc_var_align_size`,
75
+ and `nc_record_align_size`.
76
+ 3. through a run-time environment variable `PNETCDF_HINTS`. Hints are
77
+ `nc_header_align_size`, `nc_var_align_size`, and `nc_record_align_size`.
78
+ + As the same hints may be set by one or more of the above methods, PnetCDF
79
+ implements the following hint precedence.
80
+ * `PNETCDF_HINTS` > `ncmpi__enddef()` > `MPI info`.
81
+ * 1st priority: hints set in the environment variable `PNETCDF_HINTS`, e.g.
82
+ `PNETCDF_HINTS="nc_var_align_size=1048576"`. Making this the first
83
+ priority is because it allows to run the same application executable
84
+ without source code modification using different alignment settings
85
+ through a run-time environment variable.
86
+ * 2nd priority: hints set in the MPI info object passed to calls of
87
+ `ncmpi_create()` and `ncmpi_open()`, e.g.
88
+ `MPI_Info_set("nc_var_align_size", "1048576");`. The reasoning is when a
89
+ 3rd-party library built on top of PnetCDF implements its codes using
90
+ 'ncmpi__enddef'. An application that uses such 3rd-party library can pass
91
+ an MPI info object to it, which further passes the info to PnetCDF. This
92
+ precedence allows that application to exercise different hints without
93
+ changing the 3rd-party library's source codes.
94
+ * 3rd priority: hints used in the arguments of `ncmpi__enddef()`, e.g.
95
+ `ncmpi__enddef(..., v_align=1048576,...)`.
96
+ + PnetCDF I/O hint `nc_header_align_size` is essentially the same as hint
97
+ `nc_var_align_size`, but its name appears to be closer to the hint's
98
+ intent, i.e. to reserve some space for the header growth in the future when
99
+ new data objects are added. Please note when both hints are set, only hint
100
+ `nc_var_align_size` will take effect and `nc_header_align_size` ignored.
101
+ + When there is no fix-sized variable (i.e. non-record variable) defined,
102
+ argument `v_minfree` passed to `ncmpi__enddef()` is ignored. In this
103
+ case, users should set `h_minfree`, if an extra header space is desired.
104
+ + When there is no fix-sized variables defined and none of hints
105
+ `nc_header_align_size`, `nc_var_align_size`, or argument `v_align` is set,
106
+ `nc_record_align_size` or `r_align`, if set, will be used to align the
107
+ header extent.
108
+ + For the above update to the hint precedence, see
109
+ PnetCDF See [PR #173](https://github.com/Parallel-NetCDF/PnetCDF/pull/173).
110
+
111
+
112
+ -------------------------------------
113
+ Version 1.14.0 (November 11, 2024)
114
+ -------------------------------------
115
+
9
116
* New features
10
117
+ Intra-node aggregation for write requests -- When the number of MPI
11
118
processes allocated to a compute node is large, this feature can
0 commit comments