Absoft F77 for Linux

First Impressions


The compiler came with an attractively bound manual and clear installation instructions. It installed with no problems. The compiler driver is named f77 which conflicts with 'f77'script. Not so big a deal for me since I use the fort77 script instead of the f77 script.

Compiling Codes With Absoft F77

Performance

brem - basically a spectrum-convolution program, where the convolution function depends on which part of the spectrum is being convolved -- that is to say that there is still a fair bit of computation going on in the inner loop.
	fort77 -O2 (f2c+gcc):   549.44 + 5.58 sec
	absoft f77 (no optim):  458.97 + 4.26 sec
	absoft f77 -e (no opt): 505.04 + 5.27 sec
	absoft f77 -O:          431.78 + 4.92 sec
	absoft f77 -O -e:       480.42 + 4.83 sec   (see below)
dw86 - a large and complex Fortran code which computes nuclear reaction probabilities. Lots of complex + transcendental arithmetic, integration of differential equations (Schroedinger), etc. Written in 70's style Fortran, lots of COMMON and EQUIVALENCE, etc.
	fort77 (f2c+gcc, no optim):  xxx.xx
	fort77 -O2 :                 276.98 + 3.06 sec
	absoft f77 -O :              270.88 + 3.66 sec
	absoft f77 (no optim):       392.15 + 4.86 sec

Correctness

results for brem are visually identical (ie plotted on a graph and overlayed) with those computed by f2c (which has been cross checked with DEC/Alpha Fortran).

results for dw86 were checked using a numerical-comparison script. Essentially no differences found between "good" dw86 output (verified in past with other compilers, etc.) and output of Absoft-compiled program at level of 0.0001 (fractional), excluding differences in the last digit of printed results, or places where an interference term is being computed and is the difference between two much larger numbers. In those cases, I saw differences of up to 0.5% in the results computed with executables from various different compilers.

Paranoia test (spara.f) run under Absoft and f2c/gcc compilers. Without specifying the "-e" flag to Absoft f77, it fails the paranoia test miserably, although to be fair the paranoia test mentions after failing one of the first tests that "failure of this test may invalidate results below".

After specifying the "-e" flag, the Absoft compiler gets an "excellent floating point" rating from SPARA.f. However, you can see that some of its performance edge over f2c comes from not specifying -e. The effect of -e is to force results from math operations in registers to have the precision stated in the program. If it is not specified, math is done at the precision of registers unless the program code necessitates a store to memory. I don't fully understand why, but this added precision "behind your back" can cause problems and is the source of the paranoia failure.

f2c passes the paranoia test when run with no options under the fort77 script.