I would guess that the failure is due to different arithmetic (modular vs. saturating) across the kernels.
The test logic intentionally uses very small integers to avoid overflow/saturation conditions, but this is not foolproof when the input vectors are long:
Example of a failed CI run: https://github.com/gnuradio/volk/actions/runs/6606089847/job/17941931107
Failures can be reproduced locally with:
I would guess that the failure is due to different arithmetic (modular vs. saturating) across the kernels.
The test logic intentionally uses very small integers to avoid overflow/saturation conditions, but this is not foolproof when the input vectors are long:
https://github.com/gnuradio/volk/blob/42f57cd67506e7fb6a7795af3948b803de0085f4/lib/qa_utils.cc#L75-L77
I think the kernels should be adjusted so they perform the same type of arithmetic. (Saturating arithmetic everywhere?)
Log: