Lokathor / wide

A crate to help you go wide. By which I mean use SIMD stuff.
https://docs.rs/wide
zlib License
279 stars 23 forks source link

Tests failed on fedora koji on s390x arch #88

Closed ghost closed 1 year ago

ghost commented 3 years ago

https://kojipkgs.fedoraproject.org//work/tasks/4780/71404780/build.log It is possible that the problem is with rust or the fact that it is a big endianness arch, but you should better know it then me.

failures: ---- impl_f32x4_recip_sqrt stdout ---- thread 'impl_f32x4_recip_sqrt' panicked at 'assertion failed: actual.is_nan().any()', tests/t_f32x4.rs:574:5 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace ---- impl_f32x4_sqrt stdout ---- thread 'impl_f32x4_sqrt' panicked at 'assertion failed: (left == right) left: (-0.0, -0.0, -0.0, -0.0), right: (inf, inf, inf, inf)', tests/t_f32x4.rs:614:5 failures: impl_f32x4_recip_sqrt impl_f32x4_sqrt test result: FAILED. 46 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

Lokathor commented 3 years ago

I've never tested this crate on big-endian honestly. There's probably numerous bugs on BE systems. I don't have any BE systems to test on but I'd be happy to accept a fix from anyone with such a system who makes a patch.

As I recall, those routines convert the float to u32, then do some bit operations, then convert back. If the byte order of floats and unsigned ints don't match then that could cause a problem for example.

ghost commented 2 years ago

With version 0.7.2 there is only one test that failed now.

failures: ---- test_software_sqrt stdout ---- thread 'test_software_sqrt' panicked at 'assertion failed: software_sqrt(f64::NAN).is_nan()', src/lib.rs:872:3

https://kojipkgs.fedoraproject.org//work/tasks/7394/79897394/build.log

Lokathor commented 2 years ago

That's a little concerning because I'm 99% sure this is from libm, but... we can fix that up with a early out I guess?

Lokathor commented 2 years ago

okay, 0.7.3 should fix that error at least, though other asserts in the same test are probably still an error since i don't have a local BE system to test on.

ghost commented 2 years ago

It correct the assertion problem. now there is only one test failing.

test test_software_sqrt ... FAILED failures: ---- test_software_sqrt stdout ---- thread 'test_software_sqrt' panicked at 'assertion failed: (left == right) left: 361379264997087600000000000000000000000000000000000000000000000000000000000000000000.0, right: inf', src/lib.rs:876:3

https://kojipkgs.fedoraproject.org//work/tasks/9840/79899840/build.log

Lokathor commented 2 years ago

Yeah, that's just a few lines later in the same test. Since the function relies on transmuting multi-byte values it's sensitive to endian-ness.

it's probably possible to fix that with sufficient care.

mcroomp commented 1 year ago

This is fixed now and the build verification now includes MIPS bigendian

Lokathor commented 1 year ago

good news closing