-
Notifications
You must be signed in to change notification settings - Fork 4
/
sneak_peek
184 lines (158 loc) · 8.68 KB
/
sneak_peek
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
------------------------------------------------------------------------------
This is essentially a placeholder for the next release note ...
------------------------------------------------------------------------------
o New features
* none
o New optimization
* Internal memory management for nonblocking APIs has been improved further
to reduce memory footprint. See r3763.
* Both blocking and nonblocking varn APIs have been improved for better
performance and reduced memory footprint. See r3747-r3750.
* Prior to this release, when buftype in flexible APIs indicates a
noncontiguous layout in user buffer, PnetCDF packs the user buffer into
a contiguous buffer allocated internally, which will later be used in
MPI-IO calls. To reduce memory footprint, this release avoids the
additional memory allocation and directly uses the user buffer in MPI-IO
calls when byte-swap and type-conversion are not required. See r3722 and
r3723.
o New Limitations
* none
o Update configure options
* Option in-place byte-swap is expanded into the followings.
--enable-in-place-swap : perform byte swap on user I/O buffers whenever
possible. This option results in the least amount of internal memory
usage. However, if an immutable user buffer is used, segmentation fault
may occur when byte swap is performed on user buffer in place.
--disable-in-place-swap : when byte swap is required, an internal memory
space will be allocated for byte swap without altering the contents of
user buffer. This option will increase internal memory footprint.
default (neither the above option is used at the command line): an
internal buffer is allocated for byte swap only when the I/O request size
is less than 4 KiB. For larger requests, user buffers are used for
in-place byte swap.
The mode can also be changed at the run time by setting the PnetCDF hint
nc_in_place_swap. See New hints below for more info.
Note -in-place-swap option only affect applications running on Little
Endian machines, as no byte swap is necessary on Big Endian machines.
o New constants
* none
o New APIs
* none
o API syntax changes
* none
o API semantics updates
* ncmpi_put_vard and ncmpi_get_vard APIs
1. Now allow to write and read two or more variables in a single call to
vard APIs. In this case, argument varid will be the ID of first
variable. Argument filetype should be constructed by using the
relative distance between any two successive variables. See example
program examples/C/vard_mvars.c.
2. When argument filetype is MPI_DATATYPE_NULL, the request is considered
a zero-length request.
3. Limitation of vard APIs: The element data type of filetype must
conform with the variable external NC data type. The element data
types of all variables accessed in filetype must be the same.
Otherwise, NC_EMULTITYPES will be returned.
4. buftype must contain only one element data type. Otherwise
NC_EMULTITYPES will be returned.
o New error code precedence
* none
o Updated error strings
* none
o New error code
* none
o New PnetCDF hint
* nc_in_place_swap -- to enable or disable in-place byte swap on Little
Endian architectures. The default mode is auto. See in-place byte-swap
option above for descriptions of the three modes. Below is an example
that changes the mode set at the configure time to "enable", by setting
the environment variable PNETCDF_HINTS with command:
export PNETCDF_HINTS="nc_in_place_swap=enable"
o New run-time environment variables
* none
o Build recipes
* doc/README.IBM is revised as the compiler behavior has changed on BGQ
since the release of 1.9.0.
* doc/README.CRAY is revised as the compiler behavior has changed on CRAY
since the release of 1.9.0.
* doc/README.Ubuntu is revised and the fix of adding LDFLAGS is no longer
necessary.
o New/updated utility program
* ncvalidator adds a new option -t to turn on tracing mode which prints all
successfully validated metadata till the first error encountered.
* ncvalidator adds a check to detect whether there are two or more
unlimited dimensions defined in the file and, if yes, reports error code
NC_EUNLIMIT.
o Other updates:
* Inter-library dependencies among C, C++ and Fortran have been updated to
follow automake user guide: add FLIBS and FCLIBS to _LIBADD.
* Move the memory allocation trace feature out of --enable-debug into the
new configure option --enable-profiling. By default, this is disabled.
* Add a check for NC_EUNLIMIT in API ncmpi_open to detect whether two or
more unlimited dimensions are defined in a corrupted file.
o Bug fixes
* Fix type_create_subarray64() for case when some dimensions of the global
array is larger than 4G and oldtype is not MPI_BYTE. See r3779. Without
this fix, test/largefile/large_var.c will fail. Note prior to 1.9.1,
type_create_subarray64() is always called with oldtype being MPI_BYTE.
* Fix configure-time bug that configure fails to recognize the compilers
with full path names set in the environment variable MPICC, MPICXX,
MPIF77, or MPI_F90. See Ticket #35 for bug report and r3740 for fix.
* Fix the bug that writing scalar attributes of type NF_INT64 was
mistakenly casted to NF_INT. See r3730.
* Fix test/testcases/erange_fill.m4 for the case of NC_LONG data type.
NC_LONG is synonym of NC_INT. When setting fill value for variables of
type NC_LONG, the user buffer must be of type int (internal). See r3726.
* Fix the calculation of new record number in put_vard API. Thanks to
Jim Edwards. See r3675.
* Fix the calculation of growing size of nonblocking request queues to
include the number of records of a record variable, as such request is
split into multiple additional requests, one for each record. See r3651.
* Remove freeing name object because NC_ENULLPAD is not a fatal error. See
r3644. This bug only appears when --enable-null-byte-header-padding is
set at configure time and opening files whose headers are not padded with
null bytes.
* Member "value" of NC_dimarray, NC_attrarray, and NC_vararray can still be
NULL when a corrupted tag of NC_DIMENSION, NC_ATTRIBUTE, or NC_VARIABLE
is read from files. Add a check against NULL before freeing it. This bug
only appears when reading files with corrupted NC tags. See r3645.
o New example programs
* example/C/vard_mvars.c shows an example of using a single vard API call
to write or read two variables.
o New programs for I/O benchmarks
* none
o New test program
* test/testcases/test_fillvalue.c - tests PnetCDF allows to put attribute
_FillValue for global variable and for non-global variable, requires the
data type of attribute _FillValue be the same as the variable's.
* test/F90/test_attr_int64.f90 - tests the bug fixed in r3730 that
nf90mpi_put_att API writes a scalar attribute of type NF90_INT64 that
was mistakenly casted to NF90_INT.
* test/testcase/test_vard_rec.c - tests ncmpi_put_vard APIs for writing a
record variable with one record at a time. This is to test the fix to
bug reported by Jim Edwards in r3675.
* test/nonblocking/large_num_reqs.c - tests large number of nonblocking put
and get requests (larger than NC_REQUEST_CHUNK, the constant used to grow
the internal queues that store the nonblocking put and get requests. This
is to test bug fix in r3651.
* test/testcases/tst_def_var_fill.c - tests API ncmpi_def_var_fill and
verifies fill values when fill mode is turned on and off.
* src/utils/ncvalidator/tst_open.c - tests API ncmpi_open against corrupted
files and checks expected error codes.
o Conformity with NetCDF library
* NetCDF allows to put attribute _FillValue of any NC data type to the
global variable, NC_GLOBAL. PnetCDF conforms with this behavior.
* For non-global variables, NetCDF treats the classic and HDF5 files
differently. For classic files, it allows to create attribute _FillValue
of a data type that is different from the variable's. For HDF5 files, the
data type of attribute _FillValue must be the same as the variable.
PnetCDF requires the data type of attribute _FillValue be the same as
the variable's.
o Conflict with NetCDF library
* none
o Issues related to MPI library vendors:
* none
o Issues related to Darshan library:
* none
o Clarifications
* none