-
Notifications
You must be signed in to change notification settings - Fork 297
Closed
Description
Here's the relevant code excerpt:
LOG_EXPR(Arch::name());
auto batch = getBatch(expr.a, index);
LOG_EXPR(batch);
LOG_EXPR(xsimd::log(batch));
LOG_EXPR(batch.size);And the dodgy output:
Arch::name() = avx2
batch = (0.60455, 0.635409, 0.891392, 0.871854)
xsimd::log(batch) = (0.189876, 0.23966, -0.114971, -0.137133)
batch.size = 4
The first two results are pretty wrong (they should be -0.50327 and -0.453487).
This only happens for me when using xsimd::avx2 and compiling with -mavx2 -ffast-math. If it's just -mavx2 alone then I don't get the issue. It might happen for other architectures as well, AVX is just the one I have access to.
Any ideas? I had a look through the code for log(), but couldn't see how the fast-math-specific bits would give this result.
EDIT: I get correct results (with or without fast-math) if I ignore AVX2 and send it down the xsimd::avx / -mavx code path.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels