next up previous
Next: Benchmarks and other Lies Up: Portability Previous: Portable language design and

Other specific portability problems:

(Fused MAC)

Some computers have MAC (multiply/accumulate or multiply-add ) instructions which compute a*b+c faster and more accurately (one rounding). Should MAC be forbidden from portable programs?

(Cache optimization)

in spite of IDENTICAL arithmetic, clever programmers or optimizing compilers may seek the rearrangements of matrix access ordering to benefit from different cache organization or sizes.

These rearrangements can make optimal programs execute different sequences of instructions. (speedups of factors of 3 to 6 are not implausible). The results (ordinarily, very nearly the same) from two different sequences might be slightly different because fp arithmetic + is not associative: (a+b)+c may not equal a+(b+c).

My master's report has one measurement you may be interested in. I took the best PHiPAC generated matrix multiply for an UltraSPARC, ran that code on a PPro and compared it to the best PPro optimized code and to naive code on the PPro. For some matrix sizes, the UltraSPARC code on the PPro ran slower than the naive code on the PPro. This isn't too surprising when you consider the SPARC has more floating point registers and larger caches. -J Darcy

From JavaHurts..

Java, like Microsoft, forbids the majority of us (some 95% of computers on desktops have built-in 10+-byte format) from using it. We paid for it but we can't benefit from it."

Does this make any more sense than if Microsoft or Java forbade you to use your XGA or SVGA video display, or a higher resolution printer, or a faster modem?

Summary: Demanding bit for bit identicality of results is too costly for most people. In the absence of a good reason, they should not have to pay for it!



Richard J. Fateman
Fri Aug 14 11:13:05 PDT 1998