On Tue, 16 Nov 2021 16:25:10 +0100 Kristian Amlie <krist...@amlie.name> wrote:
>On 13.11.2021 00:58, Ichthyostega wrote: >> >> Hi Will, >> Hi Kristian, >> >> last week I was rather busy, and moreover, the AnalogFilter turns out >> to be challenging with respect to getting reproducible numbers on different >> compilers. For Investigation, I've added several more test cases to cover >> the various filter types and frequency responses. Running on the same >> plattform/compiler, the waveform is 100% reproducible. But GCC-7 or >> GCC-6 on older Ubuntu versions produce non-trivial differences, often >> even just -50dB RMS (which means, the residual is even faintly audible). >> >> My tests and investigations with the debugger indicate that the >> discrepancies >> happen already when computing the /filter coefficients/. And, as we all >> know, >> filters can be quite sensible to minute changes on those coefficients. >> >> The assembly does the computations in different ways, and esp. allocates >> things to registers and SSE registers differently, which is fair enough. >> >> The only solution I could find is to switch this computation of filter >> coefficients over to using doubles. This works, because then the >> discrepancies >> happen in a range that does not matter, since I won't change the type of >> the >> coefficients as such, i.e. the coefficients themselves are still floats and >> thus all the actual filter computations also stay on floats. Which also >> means, there is no tangible impact on performance, as the coefficients are >> only recomputed on parameter change, which means at most once per puffer. >> >> I have added this change on top of my "power" branch >> https://github.com/Ichthyostega/yoshimi/compare/power >> >> Moreover, the testsuite has a total of 53 tests now and I have >> (re)computed the stored baseline waveforms with a Yoshimi from that >> "power" branch. With that change, the only differences I get on the >> different plattforms/compiles are some occasional flips at the last bit, >> especially with the SUBSynth and PADSynth. These discrepancies are below >> the >> tolerance for rounding errors built into the testsuite (-120dB), i.e. they >> will not be reported (unless you use the commandline argument --strict) > >I wanted to try with the updated power functions, but at the end of the >run I got this: > > Yoshimi-Testsuite failed: Unforeseen state: No rows in DataTable yet > >Do you know what it means? > Just tried that here and got the same results :( That's with your latest builds of both testrunner and yoshimi-power -- Will J Godfrey https://willgodfrey.bandcamp.com/ http://yoshimi.github.io Say you have a poem and I have a tune. Exchange them and we can both have a poem, a tune, and a song. _______________________________________________ Yoshimi-devel mailing list Yoshimi-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/yoshimi-devel