[SYCL][TEST]Fix half normalize tolerance in marray_geometric - #22516
[SYCL][TEST]Fix half normalize tolerance in marray_geometric#22516vishwajithupendra wants to merge 2 commits into
Conversation
Use 1e-3 absolute delta for all half normalize calls, consistent with other half geometric tests (length, distance). The normalize operation chains three half-precision rounding steps (dot product -> rsqrt -> per-component multiply), each introducing up to 1 ULP of error. At the output values (~0.18 to ~0.89), 1 ULP in half precision is already in the range ~1.7e-4 to ~6.6e-4, so tolerances of 1e-4 or tighter are too close to or below 1 ULP and risk false failures. 1e-3 is the minimum round tolerance that sits comfortably above the 1 ULP range at these values and covers the rounding differences observed on Adreno GPU.
|
Ping @uditagarwal97 @bader can we please run the CI and get a review on this? Thanks |
|
@vishwajithupendra, @hdelan, I started the CI. @intel/llvm-reviewers-runtime, please, review. |
Aha, we actually have #22867 as well, which makes a start on that. Only for this one it seemed to be the most minimal change to stick to absolute values and we weren't sure what ULP values would actually be reasonable, since SYCL doesn't dictate anything and the different backends will provide different accuracy. |
Following this logic checking accuracies in general doesn't make sense for SYCL tests. ;) From the practical POV, we run SYCL tests on limited number of back-ends. I suppose current test is adjusted for values returned by Intel's OpenCL/L0 implementation rather than to satisfy OpenCL spec requirements. We could adjust the test to match specific SYCL backend accuracy requirements, but this is a separate effort beyond the current fix. |
Use 1e-3 absolute delta for all half normalize calls, consistent with other half geometric tests (length, distance).
The normalize operation chains three half-precision rounding steps (dot product -> rsqrt -> per-component multiply), each introducing up to 1 ULP of error. At the output values (~0.18 to ~0.89), 1 ULP in half precision is already in the range ~1.7e-4 to ~6.6e-4, so tolerances of 1e-4 or tighter are too close to or below 1 ULP and risk false failures. 1e-3 is the minimum round tolerance that sits comfortably above the 1 ULP range at these values and covers the rounding differences observed on Adreno GPU.