Perpendis
Live demo Sign in

Two arrays that should be identical, and are not. Where do they first differ?

Load two .npy dumps — rollout logprobs from two engines, hidden states from two GPUs, a kernel output and its reference. You get the first differing index, both bit patterns, and the ulp distance. The comparison runs in this tab: nothing is uploaded, and no account is needed.

Waiting for two arrays

A .npy file declares its own dtype, so that is what gets used. A headerless buffer has no dtype to read, so you declare it above — this tool never guesses one from the bytes. float32 and float64 only.

What this can and cannot tell you

Two output arrays do not say what produced them. Without the operation there is nothing to recompute, so this tool will not tell you which side is correct, or whether the gap is a legal floating-point reordering rather than a bug — those need information you have not given it, and guessing would be worse than useless. What it does tell you is exact: where the arrays first differ, by how many representable values, and in what way.

Equality here is bit equality, not ==. So +0 and −0 are reported as differing, two NaNs with the same bits are not, and an infinity against a finite value is never reported as a distance.