info-vax@ucbvax.ARPA (11/25/84)
From: Bill Mitchell <whm%arizona.csnet@csnet-relay.arpa>
Does anyone have approximate instruction timings for single and double
precision floating point operations on a 780? I don't need anything extremely
accurate; the question I'm trying to answer is how much speedup might
result from doing all C floating point calculations in single precision
rather than double precision.
Thanks,
Bill Mitchell
whm.arizona@csnet-relay
{noao,mcnc,utah-cs}!arizona!whminfo-vax@ucbvax.ARPA (11/26/84)
From: Tony Li <Tli@Usc-Eclb>
From: Bill Mitchell <whm%arizona.csnet at csnet-relay.arpa>
Does anyone have approximate instruction timings for single and double
precision floating point operations on a 780? I don't need
anything extremely
accurate; the question I'm trying to answer is how much speedup might
result from doing all C floating point calculations in single precision
rather than double precision.
These are some instruction timings that I have. If you disregard the
time that C takes to do CVTFD and CVTDF, I'd say that you'd gain
roughly a factor of 4 or better. These timings were done by Oregon
Software on a 780. All times are in microseconds. I don't know if
they had an FPA, but from the figures, I'd guess that they did.
Cheers,
Tony ;-)
ADD
40 ADDF2 Add F_floating 2 operand [1.60]
41 ADDF3 Add F_floating 3 operand [2.00]
60 ADDD2 Add D_floating 2 operand [7.80]
61 ADDD3 Add D_floating 3 operand [8.00]
SUB
42 SUBF2 Subtract F_floating 2 operand [1.40]
43 SUBF3 Subtract F_floating 3 operand [1.80]
62 SUBD2 Subtract D_floating 2 operand [7.20]
63 SUBD3 Subtract D_floating 3 operand [7.40]
MUL
44 MULF2 Multiply F_floating 2 operand [5.20]
45 MULF3 Multiply F_floating 3 operand [5.80]
64 MULD2 Multiply D_floating 2 operand [17.60]
65 MULD3 Multiply D_floating 3 operand [18.00]
DIV
46 DIVF2 Divide F_floating 2 operand [7.60]
47 DIVF3 Divide F_floating 3 operand [8.20]
66 DIVD2 Divide D_floating 2 operand [42.80]
67 DIVD3 Divide D_floating 3 operand [43.00]info-vax@ucbvax.ARPA (11/26/84)
From: Mike Minnich <mminnich@udel-ee> Bill, If you look at the compiler output, you'll see that floats always are converted to doubles before any computation is done. What's more, after the computation, the doubles are converted back to float! As a matter of fact, my office mate found that declaring everything double resulted in a significant decrease in run time, esp. when doing heavy duty floating pt computations. Do everything in double, not float. mike
info-vax@ucbvax.ARPA (11/27/84)
From: decvax!mcnc!rti-sel!rcb@BERKELEY I once ran a quick test that showed 10,000,000 single precision multiplies at about 7 seconds and 10,000,000 doubles at 13 seconds. A siginificant improvement. Randy Buckland Research Triangle Institute ...!mcnc!rti-sel!rcb
info-vax@ucbvax.ARPA (11/28/84)
From: decvax!mcnc!rti-sel!trt@BERKELEY Uhm, what computer/language were you using to time your code? The Gould C/f77 compilers use single-precision arithmetic on single-precision variables. Most other compilers to all f.p. arithmetic in double which means there is alot of float->double...arith...double->float conversion which makes double precision variables look attractive! The original definition of C was that all f.p. arithmetic be in double precision, though the proposed standard permits the Gould interpretation. Tom Truscott