3 ms·
It can also wreak havok on render farms. Apparently intel and amd floating points are different enough that you can't mix and match inside the farm.
by fleitz 14y ago
It can also wreak havok on render farms. Apparently intel and amd floating points are different enough that you can't mix and match inside the farm.
- Dylan16807 14y agoUsing the same compiler with the same instruction set/ordering running on each processor? That sounds astoundingly broken; can you find a reference?
- Someone 14y agoThat same compiler need not produce the same code for each target. For example, one CPU might be so slow running instruction X that it is faster to emulate it, while it could be faster on the other. There also are floating instructions where CPUs do not compute all bits of the correct result. See http://www.zqna.net/qna/knvvzn-do-fp-operations-give-exactly-the-same-result-on-various-x86-cpus.html http://www.zqna.net/qna/knvvzn-do-fp-operations-give-exactly.... Also, not all CPUs produce the same result. In https://blogs.oracle.com/jag/entry/transcendental_meditation https://blogs.oracle.com/jag/entry/transcendental_meditation, James Gosling claims: "As far as I know, the K5 is the only x86 family CPU that did sin/cos accurately. AMD went back to being bit-for-bit compatibile with the old x87 behavior, assumably because too many applications broke"
- Dylan16807 14y agoWhat I meant is if your primary concert is identical results it should be using the same target, with no runtime changing based on instructions on one processor or another. Anyway, K5 was almost two decades ago. If you use recent processors, or even better avoid x87 instructions entirely, are you still going to have different float results?
- Someone 14y agoHow do you check that your code never switches paths depending on CPU architecture? How do you guarantee that for the (third party) libraries you use, including your C library? Also, I think modern x86 has a "approximate 1/x" instruction that is there to be as fast as possible and, because of that, allows for differences in results. I don't know whether that is true, or whether different implementations actually exist, though.
- DannyBee 14y agoYou are thinking of the RCPSS instruction.
- Dylan16807 14y agoIn the end though that sounds like you can't be entirely sure that chips in different generations are consistent, so it's not really a manufacturer difference problem.
- jwatte 14y agoYou can mix and match x87 deterministically if you turn off 80 bit double internals. For SSE you need some SSE2 and 3 modes to do the same.