Friedrich's posting piqued my interest, so here are my results. Note that
I'm using my own timing routines on each platform, as CPU_TIME is not
standard in f90, and added a continguous array sum, ie a call to
array_sum3(x,s), which would be my notation of choice.
HP-UX 10, Nag f90 2.2, default optimisation
f77 loop, contiguous array, sum =32745.447266 time = 515.000000
f77 loop, stride 2x2 array, sum =32745.447266 time = 588.000000
f90 loop, contiguous array, sum =32745.447266 time = 1070.000000
f90 loop, stride 2x2 array, sum =32745.447266 time = 1078.000000
f90 SUM(contiguous array), sum =32745.447266 time = 230.000000
f90 SUM(stride 2x2 array), sum =32745.447266 time = 237.000000
Cray T3E f90, default optimisation
f77 loop, contiguous array, sum =32751.754418 time = 0.571722
f77 loop, stride 2x2 array, sum =32751.754418 time = 1.336889
f90 loop, contiguous array, sum =32751.754418 time = 0.575314
f90 loop, stride 2x2 array, sum =32751.754418 time = 1.240247
f90 SUM(contiguous array), sum =32751.754418 time = 0.595257
f90 SUM(stride 2x2 array), sum =32751.754418 time = 1.240847
Cray T3E f90, -O3,unroll2 optimisations (our operational choice)
f77 loop, contiguous array, sum =32751.754418 time = 0.519780
f77 loop, stride 2x2 array, sum =32751.754418 time = 1.068982
f90 loop, contiguous array, sum =32751.754418 time = 0.595691
f90 loop, stride 2x2 array, sum =32751.754418 time = 1.106405
f90 SUM(contiguous array), sum =32751.754418 time = 0.578665
f90 SUM(stride 2x2 array), sum =32751.754418 time = 1.107579
We wrote our code with array operations rather than DO loops where
possible, which looks a sensible choice from these figures.
John
--
John Bray, Numerical Weather Prediction Tel: +44 (0) 1344 854035
Room 337 [log in to unmask]
The Met. Office http://www.met-office.gov.uk
London Road, Bracknell, RG12 2SZ, UK http://www.jrbray.org.uk
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|