Skip to content

Commit 2b3a22a

Browse files
committed
further clarify hints and changes
1 parent 127648a commit 2b3a22a

File tree

1 file changed

+58
-44
lines changed

1 file changed

+58
-44
lines changed

sneak_peek.md

Lines changed: 58 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ This is essentially a placeholder for the next release note ...
33
------------------------------------------------------------------------------
44

55
* New features
6-
+ Flexible APIs now can be used as high-level APIs, when argument bufcount
7-
is NC_COUNT_IGNORE and buftype is an MPI predefined data type. See
6+
+ Flexible APIs now can be used as high-level APIs, when argument `bufcount`
7+
is `NC_COUNT_IGNORE` and `buftype` is an MPI predefined data type. See
88
[PR #82](https://github.com/Parallel-NetCDF/PnetCDF/pull/82). Below is an
99
example of writing from a memory buffer of type float.
1010
```
@@ -36,26 +36,26 @@ This is essentially a placeholder for the next release note ...
3636
See [PR #122](https://github.com/Parallel-NetCDF/PnetCDF/pull/122)
3737
3838
* Configure updates:
39-
+ Upgrade config.guess config.sub to 2024-01-01.
39+
+ Upgrade `config.guess` and `config.sub` to 2024-01-01.
4040
See [PR #116](https://github.com/Parallel-NetCDF/PnetCDF/pull/116)
4141
+ FLASH-IO benchmark - add compile flag "-fallow-argument-mismatch" for GNU
4242
Fortran 10 and later.
4343
See [PR #114](https://github.com/Parallel-NetCDF/PnetCDF/pull/114)
44-
+ Handle the case when MPICC env is not set and "--with-mpi" is not used.
45-
See commit 6142135.
46-
+ Upgrade autotools version requirement to autoconf 2.71, automake 1.16.5, and
47-
libtool 2.4.6.
44+
+ Handle the case when MPICC environment variable is not set and `--with-mpi`
45+
is not used. See commit 6142135.
46+
+ Upgrade Autotools version requirement to autoconf 2.71, automake 1.16.5, and
47+
libtool 2.4.6. (Note this change affects PnetCDF developers only.)
4848
See [PR #95](https://github.com/Parallel-NetCDF/PnetCDF/pull/95)
4949
Thanks to Blaise Bourdin for pointing out in
5050
[Issue #94](https://github.com/Parallel-NetCDF/PnetCDF/issues/94)
5151
that configure failed when using Intel OneAPI 2022.2.0 compilers. The fix
5252
is to use autoconf 2.70 and newer.
5353
5454
* New constants
55-
+ NC_COUNT_IGNORE - This is used in flexible APIs. When argument bufcount is
56-
NC_COUNT_IGNORE, buftype must be a predefine MPI datatype and the APIs
57-
operate as the high-level APIs. Fortran equivalents are NF_COUNT_IGNORE and
58-
NF90_COUNT_IGNORE.
55+
+ `NC_COUNT_IGNORE` - This is used in flexible APIs. When argument `bufcount`
56+
is `NC_COUNT_IGNORE`, `buftype` must be a predefine MPI datatype and the
57+
APIs operate as the high-level APIs. Fortran equivalents are
58+
`NF_COUNT_IGNORE` and `NF90_COUNT_IGNORE`.
5959
6060
* New APIs
6161
+ none
@@ -64,13 +64,13 @@ This is essentially a placeholder for the next release note ...
6464
+ none
6565
6666
* API semantics updates
67-
+ File open flag NC_SHARE is now deprecated. It is still defined, but takes
67+
+ File open flag `NC_SHARE` is now deprecated. It is still defined, but takes
6868
no effect.
69-
+ NC_SHARE alone is not sufficient to provide data consistency for accessing
69+
+ `NC_SHARE` alone is not sufficient to provide data consistency for accessing
7070
a shared file in parallel and thus is now deprecated. Because PnetCDF
7171
follows the MPI file consistency, which only addresses the case when all
7272
file accesses are relative to a specific file handle created from a
73-
collective open, NC_SHARE becomes invalid. See doc/README.consistency.md
73+
collective open, `NC_SHARE` becomes invalid. See doc/README.consistency.md
7474
for more information.
7575
7676
* New error code precedence
@@ -83,7 +83,7 @@ This is essentially a placeholder for the next release note ...
8383
+ none
8484
8585
* New PnetCDF hint
86-
+ nc_header_collective -- to instruct PnetCDF to call MPI collective APIs to
86+
+ `nc_header_collective` -- to instruct PnetCDF to call MPI collective APIs to
8787
read and write the file header. The default is "false", meaning the file
8888
header is only read/written by rank 0, using MPI independent read and write
8989
APIs. When set to "true", collective APIs will be used with all other
@@ -97,7 +97,7 @@ This is essentially a placeholder for the next release note ...
9797
+ none
9898
9999
* Updated utility program
100-
+ ncvalidator - When the file size is larger and smaller than expected, the
100+
+ `ncvalidator` - When the file size is larger and smaller than expected, the
101101
file may still be a valid netCDF file.
102102
* When larger, this can happen if opening an existing file that contains no
103103
variable. Deleting a global attribute reduces the file header size. The
@@ -107,20 +107,24 @@ This is essentially a placeholder for the next release note ...
107107
* When smaller, this can happen if the last variable is partially written.
108108
The expected file size is calculated based on the full sizes of all
109109
variables. The file is still a valid netCDF file.
110-
* In the former case, PR #99 changes ncvalidator to report a warning,
110+
* In the former case, PR #99 changes `ncvalidator` to report a warning,
111111
rather than an error.
112-
+ ncvalidator - Add printing of the dimension size of a variable when its
112+
+ `ncvalidator` - Add printing of the dimension size of a variable when its
113113
size is larger than the limitation allowed by the file format. See commit
114114
5584d44.
115115
+ Add file src/utils/README.md which gives short descriptions of the utility
116116
programs and collapsible bullets to display their manual pages.
117117
118118
* Other updates:
119-
+ File stripe size is no longer used to set the size of file header extent.
120-
Automatically set the size of file header extent using the file striping
121-
size obtained from MPI-IO hint 'striping_unit' may yield an unexpectedly
122-
large file header extent and cause movement of data sections if new
123-
metadata is added when the program re-enter the define mode.
119+
+ Since version 1.1.0, PnetCDF has been using file striping size, if
120+
obtainable from hint `striping_unit` set by users or MPI-IO underneath, to
121+
align the starting file offset of data section. This offset is also
122+
referred to as the file header extent, which can be larger than the header
123+
size to allow header to grow if new data objects are added. Starting from
124+
this release of 1.13.0, file stripe size is no longer used for this
125+
purpose. This is because automatically setting file header extent using the
126+
file striping size may yield an unexpectedly large file header extent and
127+
cause movement of data sections if new metadata is added.
124128
See [PR #124](https://github.com/Parallel-NetCDF/PnetCDF/pull/124) and
125129
[PR #125](https://github.com/Parallel-NetCDF/PnetCDF/pull/125).
126130
+ Use unsigned int to do byte swap.
@@ -142,14 +146,17 @@ This is essentially a placeholder for the next release note ...
142146
See [PR #79](https://github.com/Parallel-NetCDF/PnetCDF/pull/79).
143147
144148
* Bug fixes
145-
+ Fix Fortran APIs internal call to nfmpi_inq_buffer_size.
149+
+ Fix residual values of `v_align` and `r_align` when re-entering the define
150+
mode multiple times.
151+
See [PR #126](https://github.com/Parallel-NetCDF/PnetCDF/pull/126).
152+
+ Fix Fortran APIs internal call to `nfmpi_inq_buffer_size`.
146153
See [PR #111](https://github.com/Parallel-NetCDF/PnetCDF/pull/111).
147-
+ Fix ncmpi_inq_num_rec_vars and ncmpi_inq_num_fix_vars when opening an
148-
existing file. See
154+
+ Fix `ncmpi_inq_num_rec_vars()` and `ncmpi_inq_num_fix_vars()` when opening
155+
an existing file. See
149156
[PR #103](https://github.com/Parallel-NetCDF/PnetCDF/pull/103).
150-
+ ncmpidiff - when checking the dimensions defined in the second files
157+
+ `ncmpidiff` - when checking the dimensions defined in the second files
151158
whether they are defined in the first file. See 88cd9c1.
152-
+ Use Fortran subroutine Get_Environment_Variable instead of getenv.
159+
+ Use Fortran subroutine `Get_Environment_Variable` instead of `getenv`.
153160
See commit a0b8aca, b796759.
154161
155162
* New example programs
@@ -159,19 +166,20 @@ This is essentially a placeholder for the next release note ...
159166
+ none
160167
161168
* New test program
162-
+ test/testcases/tst_redefine.c - test multiple entries of ncmpi__enddef
169+
+ test/testcases/tst_redefine.c - test multiple entries of `ncmpi__enddef`
163170
[PR #126](https://github.com/Parallel-NetCDF/PnetCDF/pull/126).
164-
+ test/testcases/tst_symlink.c - test NC_CLOBBER on a symbolic link.
171+
+ test/testcases/tst_symlink.c - test `NC_CLOBBER` on a symbolic link.
165172
+ test/testcases/tst_del_attr.c - test delete attributes. See
166173
[PR #99](https://github.com/Parallel-NetCDF/PnetCDF/pull/99).
167-
+ test/testcases/test_get_varn.c - test get_varn API. See
174+
+ test/testcases/test_get_varn.c - test `get_varn` API. See
168175
[PR #90](https://github.com/Parallel-NetCDF/PnetCDF/pull/90).
169176
+ test/testcases/flexible_var.c - test flexible var API
170-
+ test/testcases/flexible_api.f - test flexible API when bufcount == -1
177+
+ test/testcases/flexible_api.f - test flexible API when `bufcount == -1`
171178
+ test/testcases/scalar.c - add tests for scalar variables using nonblocking
172179
APIs. See commit 07ff7b1
173180
+ test/nonblocking/test_bputf.f90, test/nonblocking/test_bputf77.f -
174-
add tests of APIs inq_buffer_usage and inq_buffer_size. See commit 94ce438
181+
add tests of APIs `inq_buffer_usage` and `inq_buffer_size`.
182+
See commit 94ce438
175183
176184
* Issues with NetCDF library
177185
+ none
@@ -189,18 +197,24 @@ This is essentially a placeholder for the next release note ...
189197
+ none
190198
191199
* Clarifications
192-
+ Hints nc_header_align_size, nc_var_align_size, and nc_record_align_size are
193-
to align the file header extent, starting file offsets of data section, and
194-
record variable section, respectively. Note that nc_var_align_size and
195-
nc_record_align_siz are not to align individual variables. They are
196-
equivalent to arguments v_align and r_align, respevtively in API
197-
ncmpi__enddef().
198-
+ Using NC_CLOBBER in ncmpi_create() can be expensive if the file already
200+
+ Hints `nc_header_align_size` and `nc_record_align_size` are to align the
201+
file header extent and starting file offset of the record variable section,
202+
respectively. Hint `nc_record_align_size` is not to align the offsets of
203+
individual record variables.
204+
+ Prior to version 1.13.0, hint `nc_var_align_size` is used to align the
205+
starting file offsets of individual fixed-size variables. Beginning from
206+
version 1.13.0, this hint is used to align only the starting file offset of
207+
the entire data section, not individual variables. The reason of such
208+
change is because PnetCDF nonblocking APIs can aggregate multiple I/O
209+
requests and MPI-IO today has been optimized to align I/O to file striping
210+
boundaries, which makes aligning starting offsets of individual variables
211+
less effective and may create empty space in the file.
212+
+ Using `NC_CLOBBER` in `ncmpi_create()` can be expensive if the file already
199213
exists. If the existing file is a regular file, then PnetCDF will delete it
200-
with a call to unlink() first and re-created it later. Calling unlink() on
214+
with a call to `unlink()` first and re-created it later. Calling `unlink()` on
201215
may be expensive for some parallel file systems. If the existing file is a
202-
symbolic link, then PnetCDF will call truncate() or MPI_File_set_size() to
203-
truncate the file size to zero. Calling truncate() may also be very
216+
symbolic link, then PnetCDF will call `truncate()` or `MPI_File_set_size()` to
217+
truncate the file size to zero. Calling `truncate()` may also be very
204218
expensive on some file systems, e.g. Lustre. Sporadically a long time spent
205-
on unlink() and truncate() was observed on Perlmutter.
219+
on `unlink()` and `truncate()` was observed on Perlmutter.
206220

0 commit comments

Comments
 (0)