Open fweimer-rh opened 1 year ago
Seen with 3.1.8.
I confirm, 3.1.7 was fine on aarch64 and breaks with 3.1.8.
@kdt3rd, it looks like the test that's failing was introduced in 3.1.8 as a part of the expanded DWA support, so it's something deeper than a simple regression.
yes, this will be in the neon code ported into the core library (or ifdefs mismatching in doing so)
Thanks, I see this as well, namely for ppc64le
, aarch64
and arm7l
architectures.
Details:
https://build.opensuse.org/package/show/graphics/openexr
@fweimer-rh is it possible that you are compiling with custom CXXFLAGS for architecture choices and now the Core library requires similar changes to using CFLAGS (it being pure C, not C++)? What I thought might be an issue does not appear to be an obvious issue, except I was seeing errors like that when one library is using SIMD extensions and the other isn't (they don't produce identical numerical results then). This is temporary until we gain confidence that the two are the same in all cases, and then we'll use the C implementation from the C++ layer.
@kdt3rd We haven't changed our build flags on aarch64 or i686, so that's probably not really the issue here. Our i686 variant does not even have FMA (but aarch64 does).
It seems these tests pass only on x86_64. With 3.1.9, these tests fail on i686, aarch64, ppc64le, and s390x (tested with Fedora rawhide).
If we can confirm the problem is the test and not an actual arch issue I can skip tests on non x86_64 arches.
It would appear that using pre-computed values result in slightly different results on non-sse architectures. I've reverted that change for now in #1488 (will let it test on main, then pick onto the 3.1 release branch)
I backported #1488 on top of 3.1.9 and it fixes most architectures (armv7, ppc64le, etc.) but aarch64 still fails:
[ 112s] 58/113 Test #50: OpenEXRCore.testDWAACompression ...........Subprocess aborted***Exception: 2.34 sec
[ 112s] tempDir = '/var/tmp/OpenEXR_0hzGw8/': 24
[ 112s]
[ 112s] =======
[ 112s] Running testDWAACompression
[ 112s] zeroes tiled: no sampling 1, 1 comp 8
[ 112s] File sizes do not match: '/var/tmp/OpenEXR_0hzGw8/zeroes_imf_test_comp.exr' 3602 '/var/tmp/OpenEXR_0hzGw8/zeroes_imf_test_comp_cpp.exr' 3707
[ 112s] zeroes tiled: yes sampling 1, 1 comp 8
[ 112s] Files '/var/tmp/OpenEXR_0hzGw8/zeroes_imf_test_comp.exr' and '/var/tmp/OpenEXR_0hzGw8/zeroes_imf_test_comp_cpp.exr' differ in chunk starting at 411
[ 112s] zeroes tiled: no sampling 1, 2 comp 8
[ 112s] File sizes do not match: '/var/tmp/OpenEXR_0hzGw8/zeroes_imf_test_comp.exr' 4592 '/var/tmp/OpenEXR_0hzGw8/zeroes_imf_test_comp_cpp.exr' 4692
[ 112s] zeroes tiled: no sampling 2, 1 comp 8
[ 112s] File sizes do not match: '/var/tmp/OpenEXR_0hzGw8/zeroes_imf_test_comp.exr' 3602 '/var/tmp/OpenEXR_0hzGw8/zeroes_imf_test_comp_cpp.exr' 3707
[ 112s] zeroes tiled: no sampling 2, 2 comp 8
[ 112s] File sizes do not match: '/var/tmp/OpenEXR_0hzGw8/zeroes_imf_test_comp.exr' 4592 '/var/tmp/OpenEXR_0hzGw8/zeroes_imf_test_comp_cpp.exr' 4692
[ 112s] pattern1 tiled: no sampling 1, 1 comp 8
[ 112s] File sizes do not match: '/var/tmp/OpenEXR_0hzGw8/pattern1_imf_test_comp.exr' 7640 '/var/tmp/OpenEXR_0hzGw8/pattern1_imf_test_comp_cpp.exr' 70350
[ 112s] pattern1 tiled: yes sampling 1, 1 comp 8
[ 112s] File sizes do not match: '/var/tmp/OpenEXR_0hzGw8/pattern1_imf_test_comp.exr' 88311 '/var/tmp/OpenEXR_0hzGw8/pattern1_imf_test_comp_cpp.exr' 88096
[ 112s] pattern1 tiled: no sampling 1, 2 comp 8
[ 112s] File sizes do not match: '/var/tmp/OpenEXR_0hzGw8/pattern1_imf_test_comp.exr' 9690 '/var/tmp/OpenEXR_0hzGw8/pattern1_imf_test_comp_cpp.exr' 73368
[ 112s] pattern1 tiled: no sampling 2, 1 comp 8
[ 112s] File sizes do not match: '/var/tmp/OpenEXR_0hzGw8/pattern1_imf_test_comp.exr' 7640 '/var/tmp/OpenEXR_0hzGw8/pattern1_imf_test_comp_cpp.exr' 70350
[ 112s] pattern1 tiled: no sampling 2, 2 comp 8
[ 112s] File sizes do not match: '/var/tmp/OpenEXR_0hzGw8/pattern1_imf_test_comp.exr' 9690 '/var/tmp/OpenEXR_0hzGw8/pattern1_imf_test_comp_cpp.exr' 73368
[ 112s] pattern2 tiled: no sampling 1, 1 comp 8
[ 112s] File sizes do not match: '/var/tmp/OpenEXR_0hzGw8/pattern2_imf_test_comp.exr' 1890661 '/var/tmp/OpenEXR_0hzGw8/pattern2_imf_test_comp_cpp.exr' 1745228
[ 112s] R half at 1353, 8 not equal: C++ loaded C 0x2e2f (0.0966187) vs C loaded C 0x2e2d (0.0964966)
[ 112s] Core Test failed: a == b
[ 112s] file:/home/abuild/rpmbuild/BUILD/openexr-3.1.9/src/test/OpenEXRCoreTest/compression.cpp
[ 112s] line:475
[ 112s] function:static void pixels::compareExact(uint16_t, uint16_t, int, int, const char*, const char*, const char*)
[ 112s]
[ 112s] Start 62: OpenEXR.testConversion
[ 114s] 59/113 Test #51: OpenEXRCore.testDWABCompression ...........Subprocess aborted***Exception: 2.85 sec
[ 114s] tempDir = '/var/tmp/OpenEXR_Hi3fZx/': 24
[ 114s]
[ 114s] =======
[ 114s] Running testDWABCompression
[ 114s] zeroes tiled: no sampling 1, 1 comp 9
[ 114s] File sizes do not match: '/var/tmp/OpenEXR_Hi3fZx/zeroes_imf_test_comp.exr' 2791 '/var/tmp/OpenEXR_Hi3fZx/zeroes_imf_test_comp_cpp.exr' 2861
[ 114s] zeroes tiled: yes sampling 1, 1 comp 9
[ 114s] Files '/var/tmp/OpenEXR_Hi3fZx/zeroes_imf_test_comp.exr' and '/var/tmp/OpenEXR_Hi3fZx/zeroes_imf_test_comp_cpp.exr' differ in chunk starting at 411
[ 114s] zeroes tiled: no sampling 1, 2 comp 9
[ 114s] File sizes do not match: '/var/tmp/OpenEXR_Hi3fZx/zeroes_imf_test_comp.exr' 3001 '/var/tmp/OpenEXR_Hi3fZx/zeroes_imf_test_comp_cpp.exr' 3071
[ 114s] zeroes tiled: no sampling 2, 1 comp 9
[ 114s] File sizes do not match: '/var/tmp/OpenEXR_Hi3fZx/zeroes_imf_test_comp.exr' 2791 '/var/tmp/OpenEXR_Hi3fZx/zeroes_imf_test_comp_cpp.exr' 2861
[ 114s] zeroes tiled: no sampling 2, 2 comp 9
[ 114s] File sizes do not match: '/var/tmp/OpenEXR_Hi3fZx/zeroes_imf_test_comp.exr' 3001 '/var/tmp/OpenEXR_Hi3fZx/zeroes_imf_test_comp_cpp.exr' 3071
[ 114s] pattern1 tiled: no sampling 1, 1 comp 9
[ 114s] File sizes do not match: '/var/tmp/OpenEXR_Hi3fZx/pattern1_imf_test_comp.exr' 68817 '/var/tmp/OpenEXR_Hi3fZx/pattern1_imf_test_comp_cpp.exr' 68889
[ 114s] pattern1 tiled: yes sampling 1, 1 comp 9
[ 114s] File sizes do not match: '/var/tmp/OpenEXR_Hi3fZx/pattern1_imf_test_comp.exr' 234006 '/var/tmp/OpenEXR_Hi3fZx/pattern1_imf_test_comp_cpp.exr' 233791
[ 114s] pattern1 tiled: no sampling 1, 2 comp 9
[ 114s] File sizes do not match: '/var/tmp/OpenEXR_Hi3fZx/pattern1_imf_test_comp.exr' 67973 '/var/tmp/OpenEXR_Hi3fZx/pattern1_imf_test_comp_cpp.exr' 68043
[ 114s] pattern1 tiled: no sampling 2, 1 comp 9
[ 114s] File sizes do not match: '/var/tmp/OpenEXR_Hi3fZx/pattern1_imf_test_comp.exr' 68817 '/var/tmp/OpenEXR_Hi3fZx/pattern1_imf_test_comp_cpp.exr' 68889
[ 114s] pattern1 tiled: no sampling 2, 2 comp 9
[ 114s] File sizes do not match: '/var/tmp/OpenEXR_Hi3fZx/pattern1_imf_test_comp.exr' 67973 '/var/tmp/OpenEXR_Hi3fZx/pattern1_imf_test_comp_cpp.exr' 68043
[ 114s] pattern2 tiled: no sampling 1, 1 comp 9
[ 114s] File sizes do not match: '/var/tmp/OpenEXR_Hi3fZx/pattern2_imf_test_comp.exr' 1707650 '/var/tmp/OpenEXR_Hi3fZx/pattern2_imf_test_comp_cpp.exr' 1707912
[ 114s] R half at 1353, 8 not equal: C++ loaded C 0x2e2f (0.0966187) vs C loaded C 0x2e2d (0.0964966)
[ 114s] Core Test failed: a == b
[ 114s] file:/home/abuild/rpmbuild/BUILD/openexr-3.1.9/src/test/OpenEXRCoreTest/compression.cpp
[ 114s] line:475
[ 114s] function:static void pixels::compareExact(uint16_t, uint16_t, int, int, const char*, const char*, const char*)
Closed inadvertently. #1488 fixes part of the problem, but there is still a failure on aarch64, right?
Closed inadvertently. #1488 fixes part of the problem, but there is still a failure on aarch64, right?
That's correct. Aarch64 has still issues.
The aarch64 failure looks like this:
The i686 failure looks similar, the difference being:
Seen with 3.1.8.