Well I spent a good part of last night bouncing email back and forth with
David Mosberger-Tang, and he has figured out the float/double issue.
I was compiling with DECC which defaults to K&R mode which requires that
all intermediate results and function arguments be premoted to doubles.
This cause a lot of unnecessary premotion/demotion to happen. He told
me to put the compiler in ansi mode (-std1 flag), and when I did floats
ran at least as fast as doubles.
He also did a little loop unrolling in test1 which made a tremendous
performance difference:
roadrunner> ./newtest1 10
1000 10 4.20 190.48
roadrunner> ./test1 10
1000 10 0.58 137.14
> I can also live with somewhat less spectacular performance for a couple
> of months (after which we were thinking to buy yet another Alpha - the
> deal is, that they are supposed to replace MicroVaxen to control
> measuring instruments - the software runs under linux - and we just would
> put our most decrepit P5 in that place instead and use the Alphas for
> better things - just trying to cheat our bureaucrats :-).
Sounds like a good plan. Linux/Alpha is fun.
Jim