-
Notifications
You must be signed in to change notification settings - Fork 227
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CI Failure with Bessel #510
Comments
Similar errors on ARCH=S390X |
This error:
Is rather suspiciously close to truncated-to-double-somewhere-precision. However, the code is super-simple and needs only exp/sqrt from the std lib. I'll try and figure out how to debug some of this stuff locally. |
OK progress of sorts. I found this GHA that will run jobs on the QEMU emulator: https://github.com/uraimo/run-on-arch-action and managed to get a basic test running https://github.com/jzmaddock/math/runs/1846141199?check_suite_focus=true. Math info output is illuminating:
So... long double is actually a "double double" with a non-sane epsilon value, an exponent range less than that for double, and potentially a discontinuous mantissa. It's basically impossible to reason about the behaviour of these types (from an IEEE perspective) and it break tons of assumptions in the code, so historically we've always dodged this one and set I'm attempting to run the special fun tests on the emulator now.... I don't necessarily hold out much hope, it's mega slow, even building b2 takes an age, but we'll see. It would be better to cross compile and then just feed the executables into the emulator - b2 supports that, but it's a script I don't particularly want to have to write ;) |
Great work. We might be better off running closer on the metal. I actually do (in real life with a couple of other guys) engage in OS-less debug sessions with real-time emulators on Raspberry Pi (as in use the ELF-file for single-step debugging and the like). Although I've never combined that metal domain with Boost testing. It will end up taking me (and will take me) a while to get around to it, such a long while that it will be measured in months or year(s), as I'm busy a lot of times. I'm interested in finding a compiler/hardware combination having hardware support for 64-bit double. Long double will be a bit of an unknown entity in the embedded world, but at least find one where long double is double makes it predictable. QEMU might also be expectedly limited in performance on that one in many ways such as taking exorbitantly long times to execute, whereas a real hardware device such as a Cortex-M7 running with just a little bit of connectivity might give a better window into getting real answers on an Azure pipeline. I got a paper on IoT and Azure for ST devices but have not yet investigated it. I've literally got a crate full of numerous embedded boards, but have not in any way investigated what it means to Boost Stuff on the metal (yet). |
I know that boost cannot use Travis anymore, but it seems to run fine on a fork. I have been using this yaml file. Takes about 5 hours to run. The two remaining timeout errors are from exceeding the log length. Just to get them to finish I was going to modify some of them to abort after ~100 failures. |
I'm (slowly) working through the S390X issues now. This has a genuine 128-bit long double, most of the errors I've found so far are issues with the test programs not being 128-bit clean, but is also one obscure bug in Bessel JY. |
Hi Matt (@mborland) should I test something on ARM bare-metal? If you'd like, I've learned a bit more about getting QEMU running on GHA. If you'd one day like to set up a tiny program testing a few specfun cases on bare metal in CI I'd like to have that discussion... |
I think that would be reasonable if it doesn't use a ton of CI run time. Are the toolchains generally C++14 compliant? |
I can work up a draft showning how this kind of CI run might "look and feel". At first I would just take one small existing test for 4-byte
Yes. The GCC toolchains for embedded systems use the same front end as regular GCCs and feature today's modern compliance. So if I install |
Sounds good to me. I think we need to relook dropping MSVC 14.0 because it doesn't handle the deprecated attribute properly: #974. That should buy us some space to add different toolchains. |
Cool Matt. Oh, I guess I actually already prepared something a few months ago and forgot. See the ckormanyos/boost_math_test_qemu repo and its markdown. The CI runs in GHA. |
Several test failures (example) on
cyl_bessel_k
,cyl_bessel_j_prime
,cyl_neumann_prime
,cyl_bessel_i_prime
,beta
,cyl_bessel_k_prime
all on GCC-9 CXXSTD=17 and ARCH=PPC64LE.The text was updated successfully, but these errors were encountered: