forked from verificarlo/verificarlo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
277 lines (224 loc) · 11.5 KB
/
CHANGELOG
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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
Verificarlo CHANGELOG
# [v2.0.0] 2024/05/10
## Added
* New API designed for interchangeable backends to enhance flexibility and modularity.
* `interflop-stdlib` which includes the core API, libc wrappers, common libraries (FMA, RNG, logger), and commonly used headers.
* FMA and cast instrumentation capabilities in backends, enabled through verificarlo options (`--inst-fma`, `--inst-cast`).
* `logger_debug` function to log debug messages.
* `VFC_BACKENDS_LOGGER_LEVEL` environment variable to control logger verbosity.
* Python script management overhaul using `pyproject.toml`.
* New testing strategies including parallel execution, skipable tests, and marking tests as expected to fail (XFAIL).
* Dockerfiles to test several ubuntu versions 20.04-24.04
* GitHub actions to test LLVM versions from 7-16 (on PR only)
## Changed
* Decoupled allocation of data structures from initialization, introducing new functions (`interflop_pre_init`, `interflop_cli`, `interflop_configure`, `interflop_init`).
* GCC version requirement from 6.0 to 7.0.
* glibc 2.28 dependency for <threads.h> support.
* LLVM support to version 16, ensuring compatibility with python3.11 and newer.
* Checks in `configure.ac` for `-march=native` flag and `libquadmath` support.
## Fixed
* Refactored `interflop_vprec_function_instrumentation.c` for bug fixes and functionality improvements.
* Single rounding implementation (now round-to-nearest ties-to-even).
# [v1.0.0] 2023/08/30
## Added
* Added support for Aarch64 (arm64) architectures
* Verificarlo accepts LLVM byte-code as input and can produce byte-code as output
* Interoperability with POCL
## Fixed
* Fix binary64 precision checks in vprec backend
# [v0.9.1] 2022/10/21
## Fixed
* Various fixes in autoconf and automake scripts
## Changed
* Improve error messages and by default redirect info messages to stderr
# [v0.9.0] 2022/09/27
## Added
* Support of LLVM version 15.0
* user call to change precision during runtime in the MCA and VPREC backends
* user call to change range during runtime in the VPREC backend
## Fixed
* Fix vfc-ci bug triggered when retrieving repositories from github with the
new security policy
## Changed
* Performance optimizations in MCA backends and faster random number generator.
# [v0.8.0] 2022/07/01
## Added
* New interflop_mca_int.so backend. This new MCA backend uses integer computations
to add stochastic noise. This should offer a performance gain on most architectures.
* Add VFC_BACKENDS_LOGFILE environment variable to redirect logger_info to a file
* Add `interflop_call` function into interflop_backend_interface_t interface.
Allows user to directly call low-level backend functions
* Add INTERFLOP_CALL_INEXACT allowing to directly perturb one fp value through `interflop_call` mechanism
* Add test_usercall_inexact to test the INTERFLOP_CALL_INEXACT user call
## Changed
* VFC_BACKENDS_LOGGER=False behaviour. Now truly disable logger_info output.
* Redirect logger_info to stdout instead of stderr
# [v0.7.0] 2022/01/22
## Removed
* Remove the MPFR backend, and related tests
## Fixed
* Minor bugfixes in test_mca_rng
* Minor improvements to README
## Changed
* Change license to Apache License v2.0 with LLVM Exceptions
# [v0.6.0] 2021/10/14
## Added
* Add test for MCA backend when using OpenMP and pthread threads
* A new RNG, based on drand48_r and lrand48_r
* Support for deterministic backends (such as V-PREC) in Verificarlo CI
* Add an option to place accuracy targets ("checks") on Verificarlo CI probes
## Fixed
* Minor bugfixes in Verificarlo CI
* Minor bugfixes with testplan.test
* Clean-up of build scripts
## Changed
* MCA, MCA-MPFR, Bitmask and Cancellation backends no longer use the TinyMT64 RNG
* MCA, MCA-MPFR, Bitmask and Cancellation backends use drand48_r and lrand48_r RNGs
* RNG is now re-entrant
* MCA, MCA-MPFR, Bitmask and Cancellation backends are re-entrant
* Noise generation in the MCA backend uses one floating-point operation less
* removed the TinyMT64 RNG, and changed all dependences to it towards the new RNG
# [v0.5.0] 2021/06/17
## Added
* Add test for checking vectorization instrumentation
* Add sparsity option in libinterflop_mca backend to randomly instrument a percentage of FP instructions
* Add vfc_ci, a new tool which integrates verificarlo in a CI workflow and generates interactive reports that track numerical errors across the project lifetime.
* Add significantdigits submodule dependency
* Add cleaner script for tests
* Add operation counter for IEEE backend
## Fixed
* Fix dockerhub issue that fails to init submodule
* Fix vfc_probes compilation error when compiling for Fortran
* Fix vector instrumentation for unsupported vector instructions
* Fix libVFCFuncInstrument.cpp compilation with llvm-4.0
* Fix several bugs in vfc_precexp
## Changed
* Use f-strings formatting in verificarlo.in.in, required Python >= 3.6
* Remove test.sh.in in tests to use test.sh by sourcing paths.sh file
* Reorganize documentation layout
* Only use mangled names in instrumentation passes
# [v0.4.2] 2021/02/15
## Added
* Support for LLVM up to 11.0.1
* Mechanism for reading VFC_BACKENDS from file through VFC_BACKENDS_FROM_FILE
* Absolute error option for MCA and VPREC backends
# [v0.4.1] 2020/10/22
## Added
* Add support for function instrumentation. Through a new compiler pass, backends can operate at the function granularity. Function instrumentation provides call site and call stack information and allows to instrument the scalar inputs and output of functions.
* VPREC backend takes advantage of function instrumentation to enable per function and per (scalar) argument exploration of variable precision
* Add compiler options support (-E, -S, --save-temps) and remove intermediate .ll files
* Support assembly (.S) files (which are not instrumented)
* Improved support for include/exclude mechanism. In particular now, regexps are supported
* Delta-debug supports exclude files
* Increase the size of supported vectors from 4 to 16
## Fixed
* Fix multiple corner-cases in the VPREC backend. In particular, handling of denormals has been fixed and new tests added.
* Fix configure.ac GCC version on some linux distributions
* Fix bugs in include/exclude mechanisms
* Fix bug with absolute paths for .ll paths
# [v0.4.0] 2020/07/03
## Added
* Support for LLVM up to 10.0.1
* Add flang support for Fortran
* Add test_fortran_NAS that compiles and run the CG test from the NAS Parallel Benchmarks
* Add test_cpp for testing the compilation of C++ files
* Add wrappers for each target language: verificarlo-c, verificarlo-f and verificarlo-c++
* Add the option --linker to verificarlo to choose which linker to use
* Add the option --show-cmd in verificarlo to print internal commands
* Add clang-format-lint in the CI pipeline to check the clang-format conformity of source files
* Add VPREC backend that allows simulating any floating-point formats that fit into the IEEE-754 double precision format
## Changed
* Update configure.ac to check gcc and llvm version
* Update m4/ax_llvm.m4 to remove the dragonegg option
* Update test_vprec_backend to reduce its execution time
## Fixed
* Fix test_branch_instrumentation to force FP constants to be actual float
* Fix test_kahan that does not correctly output files
* Fix wrong max range for binary32 type
* Fix typo in exclusion/inclusion rules
## Removed
* Support for LLVM 3.3 to 3.9
* Support for gcc version older than 4.9
* Support for dragonegg+gcc
# [v0.3.0] 2020/04/02
## Added
* Support for LLVM up to 9.0.1
* Add delta-debug to Verificarlo to pinpoint numerical bugs
* Add a newer backend to detect and measure the impact of cancellations
* Add bitmask backend (libinterflop_bitmask.so), a fast first order model of noise
* Add DAZ/FTZ options for flushing subnormal numbers to 0
- --daz: denormals-are-zero, flushes subnormal inputs to 0
- --ftz: flush-to-zero, flushes subnormal output to 0
* Add options for interflop_ieee backend
- --debug-binary: enable binary debug output
- --no-backend-name: do not print backend name in debug output
- --print-new-line: add a new line after debug output
- --print-subnormal-normalized: print subnormal number in the normalized form
* Separate virtual precisions for binary32 and binary64 values
* Add an option for selecting the seed of the RNG
* Add VFC_BACKENDS_SILENT_LOAD environment variable for disabling messages when a backend is loaded
* Add VFC_BACKEND_LOGGER environment variable for enabling/disabling the logger
* Add VFC_BACKEND_COLORED_LOGGER environment variable for enabling/disabling the colored messages
## Changed
* Update configure.ac for checking special types and features
* Optimize and factorize interlop_mca_mpfr and interflop_mca backends
* Upgrade python scripts to Python3
* Backends mca and mca-mpfr are bitwise comparable
## Fixed
* Fix issues in interflop_ieee backend
* Fix multiple vfc_init calls
* Use quote around PWD to support paths with spaces
* Fix bug in interflop_mca backend
* Fix GPG key error in .travis.yml
* Fix issue with the verbose mode
* Fix LIBS dependencies in configure.ac
* Fix bug in libVFCInstrument which sometimes leads to not properly instrumented operations
* Check that at least one loaded backend provides operations
[v0.2.3] 2019/08/19
## Added
* Use Interflop interface which suport loading backends as dynamic plugins
* Backend interflop_ieee which uses standard IEEE 754 arithmetic
* Backend are loadead with the VFC_BACKENDS environment variable
* Options for backends are passed with VFC_BACKENDS="/path/to/interflop_backend.so --option1 --option2 ..."
## Fixed
* Correctly detect non supported fp types
* Fix handling of boolean vectors
* Fix memory leak in quad backend
## Removed
* Environment variables VERIFICARLO_BACKENDS, VERIFICARLO_PRECISION and VERIFICARLO_MCAMODE
# [v0.2.2] 2019/08/07
* Unstable branch detection with gcov
* Branch instrumentation of FCMP instructions
* Fixed linking of shared libraries
* Fixed shell expansion in optional arguments
* Fix bug with configure LLVM flags in m4/ax_llvm
* Improved support for complex inclusion/exclusion schemes
* Add new tests
# [v0.2.1] 2018/11/22
* Support for LLVM up to 4.0.1
* Command line option to instrument a list of functions
* Multiple bug fixes in the backends
* Fix for Boost codes; verificarlo is initialized before C++ constructors
* Fix bug in vfcInstrumenter for parentless instructions
* In RR mode exact operations are preserved
* Add Kahan 2x2 test
* Add RR exact operations tests
# [v0.2.0] 2016/12/09
* Support for LLVM up to 3.8
* Support for standalone installation with make install
* Experimental VTK post-processing
* Fix bug with unsupported fortran extensions
# [v0.1.0] 2016/01/06
* QUAD backend performance has been thoroughly optimized
* QUAD backend now computes MCA operations on float using doubles
* Added tests to compare QUAD and MPFR backends
# [v0.0.2] 2015/12/29
* Support for multiple MCA backends. LLVM instrumentations goes
through a backend vtable.
* New faster QUAD backend, MCA operations on doubles are computed
using GCC __float128 type.
* vfcwrapper public API has changed
# [v0.0.1] 2015/10/22
* Initial Verificarlo release
* This is the version used in the experiments discussed in
https://hal.archives-ouvertes.fr/hal-01192668