Skip to content

Commit 92f2720

Browse files
committed
prepare release of 1.14.1
1 parent 0e4e04b commit 92f2720

File tree

7 files changed

+161
-98
lines changed

7 files changed

+161
-98
lines changed

DEVELOPER_NOTES.md

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@
77
codes. PnetCDF uses the same constants and error codes as NetCDF. See
88
"Conform with netCDF" below.
99

10-
2. Set the release version
10+
2. create a new branch, for example named "prepare-1.14.1"
11+
git checkout -B prepare-1.14.1
12+
git add the bullet points 3 and 4 below to the new branch
13+
14+
3. Set the release version
1115
In file `configure.ac`, variable `$PNETCDF_VERSION` indicates the version.
1216
It is automatically generated from the 2nd argument of `AC_INIT` call.
1317
Revise that string to the right release version. For example,
@@ -17,15 +21,15 @@
1721
```
1822
For setting shared library version (ABI versioning), see below.
1923
20-
3. Update file `RELEASE_NOTES`
24+
4. Update file `RELEASE_NOTES`
2125
Copy the contents of file `sneak_peek.md` to the top of file `RELEASE_NOTES`.
2226
Clear up file `sneak_peek.md` (reset all items to none).
2327
+ 1.9.0 and later - the release version and date in `RELEASE_NOTES` will
2428
be automatically set when running command `make dist`.
2529
+ 1.8.1 and priors - add the release version and date at the top
2630
of file `RELEASE_NOTES`.
2731
28-
4. Update the release date (1.8.1 and priors)
32+
5. Update the release date (1.8.1 and priors only)
2933
For more info, see below section "Setting PnetCDF software release date".
3034
Run command `svn commit` to get the svn property \$LastChangedDate\$
3135
updated in file `configure.in`. That string will be used as the official
@@ -34,14 +38,17 @@
3438
svn commit -m "set release date of version 1.6.1 to today"
3539
```
3640
37-
5. Commit all changes to repo servers
41+
6. Commit all changes to repo servers
3842
* 1.8.1 and priors -- run `svn commit` to upload changes to SVN server.
39-
* 1.9.0 and after -- run `git push origin master` to upload changes to
40-
github.com.
43+
* 1.9.0 and after --
44+
+ `git commit -m "prepare release of 1.14.1"
45+
+ `git push origin prepare-1.14.1` to upload changes to github.com.
46+
+ Create a pull request at github.com
47+
+ When all github actions passed, merge the PR.
4148
42-
6. Generate release tar ball (use it for testing)
49+
7. Generate release tar ball (use it for testing)
4350
* Generate a new `configure` file
44-
+ Run command `autoreconf` to generate file `configure` to be included
51+
+ Run command `autoreconf -i` to generate file `configure` to be included
4552
in the release (but ignored by the SVN/Git repo).
4653
+ Must use the bug-fixed autotools of version 2.69 or higher to run
4754
`autoreconf`. See [README.Fujitsu](doc/README.Fujitsu) for the bug in
@@ -57,7 +64,7 @@
5764
`make dist`. This setting will be done automatically, unlike step 4
5865
above that manually update the release date.
5966
60-
7. Test the new release tar ball (not source codes from the repo)
67+
8. Test the new release tar ball (not source codes from the repo)
6168
* build under the same directory as source
6269
- run `configure` (with command-line options: `--enable-strict`,
6370
`--enable-coverage`, `--disable-cxx`, `--disable-fortran` and their
@@ -125,7 +132,7 @@
125132
run instructions. Remember to add new test/example programs added in the
126133
new release.
127134
128-
8. Create a checkpoint
135+
9. Create a checkpoint
129136
* For 1.9.0 and priors - Create a new SVN tag on svn repo, by running
130137
command below to duplicate the current trunk to a new tag:
131138
```
@@ -139,7 +146,7 @@
139146
git tag -a checkpoint.1.11.0 -m "Checkpoint right before 1.11.0 release"
140147
git push origin checkpoint.1.11.0
141148
```
142-
9. Generate SHA1 checksums
149+
10. Generate SHA1 checksums
143150
* Run command:
144151
```
145152
openssl sha1 pnetcdf-1.11.0.tar.gz`
@@ -148,7 +155,7 @@
148155
```
149156
SHA1(pnetcdf-1.11.0.tar.gz)= 495d42f0a41abbd09d276262dce0f7c1c535968a
150157
```
151-
10. Update PnetCDF Web Page
158+
11. Update PnetCDF Web Page
152159
* https://github.com/Parallel-NetCDF/Parallel-NetCDF.github.io
153160
* Create a new file of release note Parallel-NetCDF.github.io/Release_notes/1.11.0.md.
154161
* Add a news item in index.html to announce the new release version.
@@ -208,6 +215,23 @@
208215
the old version at runtime: set revision to 0, bump current and age.
209216
3. Programs may need to be changed, recompiled, and relinked in order to
210217
use the new version. Bump current, set revision and age to 0.
218+
219+
libtool Chapter 7.2 Libtool’s versioning system
220+
So, libtool library versions are described by three integers:
221+
222+
current
223+
The most recent interface number that this library implements.
224+
225+
revision
226+
The implementation number of the current interface.
227+
228+
age
229+
The difference between the newest and oldest interfaces that this
230+
library implements. In other words, the library implements all the
231+
interface numbers in the range from number current - age to current.
232+
233+
If two libraries have identical current and age numbers, then the dynamic
234+
linker chooses the library with the greater revision number.
211235
```
212236
---
213237
### Note on adding new MPI compiler candidates
@@ -319,6 +343,9 @@
319343
320344
---
321345
### config.guess, config.sub, install-sh in directory scripts
346+
There 3 files are automatically added when running command "autoreconf -i"
347+
Below is just FYI.
348+
322349
Copy config.guess, config.sub, and install-sh from GNU libtool.
323350
http://www.gnu.org/software/libtool/
324351

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ Northwestern University and Argonne National Laboratory.
6060
* [Utility Programs](./src/utils#readme)
6161
* [NetCDF4 vs. PnetCDF](./doc/netcdf4_vs_pnetcdf.md)
6262
* PnetCDF [blocking vs. non-blocking APIs](./doc/blocking_vs_nonblocking.md)
63+
* [CDL header API references](./doc/cdl_api_guide.md)
6364

6465
### Mailing List
6566
* parallel-netcdf@mcs.anl.gov

RELEASE_NOTES

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,113 @@ PnetCDF Release Notes
66
Version _PNETCDF_VERSION_ (_PNETCDF_RELEASE_DATE_)
77
-------------------------------------
88

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+
9116
* New features
10117
+ Intra-node aggregation for write requests -- When the number of MPI
11118
processes allocated to a compute node is large, this feature can

benchmarks/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ using various I/O access patterns.
1212
---
1313

1414
### WRF-IO
15-
+ WRF (Wether Research and Forecast Model) is a weather prediction computer
15+
+ WRF (Weather Research and Forecast Model) is a weather prediction computer
1616
simulation program, https://github.com/wrf-model/WRF, developed at NCAR.
1717
+ This benchmark is an extraction of the I/O kernel of WRF and can be used
1818
to evaluate the file write performance of WRF.

benchmarks/WRF-IO/wrf_io.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
77

88
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
9-
* This program evaluates the file write and read performance of WRF (Wether
9+
* This program evaluates the file write and read performance of WRF (Weather
1010
* Research and Forecast Model, https://github.com/wrf-model/WRF) developed at
1111
* NCAR. It's data partitioning pattern is a 2D block-block checkerboard
1212
* pattern, along the longitude and latitude. This benchmark program reads a

configure.ac

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ dnl AC_REVISION([$Revision$])dnl
1515
dnl autoconf v2.70 and later is required. See https://github.com/Parallel-NetCDF/PnetCDF/issues/94
1616
dnl autoconf v2.70 was released in 2021-01-28
1717
AC_PREREQ([2.70])
18-
AC_INIT([PnetCDF],[1.14.0],[parallel-netcdf@mcs.anl.gov],[pnetcdf],[https://parallel-netcdf.github.io])
18+
AC_INIT([PnetCDF], [1.14.1],
19+
[parallel-netcdf@mcs.anl.gov],
20+
[pnetcdf],
21+
[https://parallel-netcdf.github.io])
1922

2023
dnl config.h.in will be created by autoreconf (autoheader)
2124
dnl call it right after AC_INIT, as suggested by autoconf
@@ -2643,7 +2646,7 @@ dnl Update the version information only immediately before a public release.
26432646
dnl PnetCDF starts with 1:0:0 (shared library is first supported in 1.9.0)
26442647
dnl because some package distributors, such as Debian, may have already built
26452648
dnl PnetCDF with shared libraries.
2646-
ABIVERSION="6:0:0"
2649+
ABIVERSION="7:0:0"
26472650
AC_SUBST(ABIVERSION)
26482651
if test "$enable_versioning" = "yes" ; then
26492652
ABIVERSIONFLAGS="-version-info \$(ABIVERSION)"

0 commit comments

Comments
 (0)