OpenColorIO icon indicating copy to clipboard operation
OpenColorIO copied to clipboard

unit test numeric failures in test_metal and test_gpu

Open JGoldstone opened this issue 2 months ago • 1 comments

macOS Sequoia 15.7.1 (i.e. fully up to patch level for Sequoia)

GL Vendor: Apple GL Renderer: Apple M4 Max GL Version: 2.1 Metal - 89.4 GLSL Version: 1.20

[202/241] [Lut1DOp / lut1d_file2_disallow_tex1D_test ] - FAILED - Maximum error: 1 at pixel: 43691 on component 1 larger than epsilon. src = {1.000015259, 1.000026703, 1.000038147, 1.000049591} cpu = {0, 1, 0, 1.000049591} gpu = {0, 0, 0, 1.000049591} absolute tolerance=9.999999747e-05

If the tolerance is 0.0001, and the failure magnitude is 1.0, this feels like a rounding error in the LUT somewhere.

As an example of a more typical error, as it turns out there are two failures in test_metal, the other being this one:

[ 56/241] [FixedFunction / style_aces2_rgb_to_jmh_fwd ] - FAILED - Maximum error: 0.000244140625 at pixel: 13 on component 2 larger than epsilon. src = {0.2668400109, 0.2460400015, 0.4093199968, 1} cpu = {53.46554947, 13.12156677, 285.6588745, 1} gpu = {53.4655571, 13.12158012, 285.6591187, 1} absolute tolerance=0.0001999999949

Over in test_gpu, there's this:

[ 69/241] [FixedFunction / style_RGB_TO_HSV_inv_custom ] - FAILED - Maximum error: 7.629394531e-06 at pixel: 7 on component 1 larger than epsilon. src = {0.5, 2.5, 0.03999999911, 0} cpu = {-39.95812988, 39.9981308, 39.9981308, 0} gpu = {-39.95812988, 39.99812317, 39.99812317, 0} absolute tolerance=9.999999975e-07

As I am trying to get ctest to run without failure to satisfy the MacPorts CI system, I'd appreciate insight on the first one here, and would ask if there's a workaround (perhaps a way to relax the tolerances for just one test?) on the second and third ones.

JGoldstone avatar Oct 22 '25 21:10 JGoldstone

For the last two, I have no objection to bumping the tolerance slightly to get them to pass.

For the first, there are known problems with the GPU unit tests on macOS. They pass on some machines and not on others. The OS version, Intel/ARM, chip version all seem to play into this. I have not had time to investigate what is happening. I'm surprised it's only one test that fails like the first one. Do I understand you are trying to work on adding a recent OCIO to MacPorts? What platform would that need to pass on?

doug-walker avatar Oct 23 '25 01:10 doug-walker