3 ms·
Sometimes, you have to. An example - some code I was working with gave subtly different results on two processors. It turned out this was because one of them
by leibnitz27 8y ago
Sometimes, you have to.
An example - some code I was working with gave subtly different results on two processors. It turned out this was because one of them implemented FMA - Fused Multiply Add.
https://en.wikipedia.org/wiki/Multiply%E2%80%93accumulate_operation https://en.wikipedia.org/wiki/Multiply%E2%80%93accumulate_op...
It wasn't particularly painful to find this, but if you were attempting to debug this kind of problem without considering lower level issues, you'd spend a whole lot of time banging your head against a wall.
- chrisseaton 8y agoIf the explicit fused instruction (so VFMADD..., we're not talking micro-code fusing, are we?) doesn't have the same semantics as a separate multiply and add then it's a compiler bug to select it, isn't it? I think if you're talking micro-code fusing then Intel does guarantee it has exactly the same semantics as a separate multiply and add. Interesting fact - I believe modern Intel architectures actually only have fused multiply add. If you do just a multiply it'll do a fused multiply and add zero.