🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.misc
Article #817

Obscure Expr. Optimization (Re: Educating FORTRAN programmers to use C)

#817
From: Clay Phipps
Date: Sat, 20 Jan 1990 04:33
76 lines
3954 bytes
In article <1298@wrgate.WR.TEK.COM>,
daniels@teklds.WR.TEK.COM (Scott Daniels) wrote:
>
>The really impressive optimizations will probably come from some system 
>that allows properties of the resulting abstractions to be defined 
>(as in Goguen's work on attaching theories to views).  

Hmmm.  Would you cite a reference or two to this work ?  Please ?

>This work may eventually lead to a system 
>which can attain (on a user type) the fabled optimization 
>(which knocked out a benchmark on a FORTRAN compiler):
>
>  for i = 1,90
   ^^^
A very forgiving FORTRAN compiler, it appears.

>    V = V + sin( PI / i ) ** 2 + cos( PI / i ) ** 2
>became
>  V = V + 90.0
>
>since the compiler knew (heavens knows why) that 
>  sin(x)**2 + cos(x)**2 = 1.

I don't consider that optimization to be one that requires divine
intervention, nor even divine consultation.  The identity is only:

             +           = 1
          /     \
       **         **
      /  \       /  \
   sin    2   cos    2
    |          |
    x          x   

I am assuming that "sin" and "cos" are standard intrinsic functions.

They can be handled without new-fangled theory if expression optimization 
is done using a generalized approach intended *in advance* to make it easy 
to incorporate benchmarksmanship like the above in a reasonably safe manner,
whether on on a sudden request from Sales or Marketing (backed by VPs 
salivating over big bucks from a possible sale from competitive bids),
or on the whim of a compiler-writer trying to find some technical
entertainment on a dreary Monday morning.

In particular, the internal representation must make references to 
built-in intrinsic functions approximately as easy and reliable 
to recognize and process as standard arithmetic operators like "+".  
It must also make it easy to compare separate expressions for equality.
At a previous computer systems company, the automatically vectorizing 
compiler to which I was assigned satisfied the latter, but not the former 
(it wasn't even close).  As a consequence, Strength-Reduction was designed 
for that compiler to work only with identities among arithmetic, logical, 
and relational operators.

Some mechanism to alert the optimizer to being fed a benchmark would 
provide an opportunity to keep the overhead down for real programs.

Without a "benchmarksmanship" flag, 90 iterations seems like an awful lot 
to unroll, unless the loop unroller is very sensitive to the complexity 
of the body of the loop.

I was more intrigued that (((...(y + 1)...+ 1) + 1) + 1) summed to 90,
not 89.99999998, until I remembered that 1.0 is exactly representable.  
Maybe I'm too paranoid about floating-point summation.  
A native-mode compiler ought to produce the same sum from a program, 
regardless of whether the summing is done by the compiler optimizer, or 
by the compiled program.
-- 
[The foregoing may or may not represent the position, if any, of my employer, ]
[ who is identified solely to allow the reader to account for personal biases.]
                                              
Clay Phipps 
Intergraph APD: 2400#4 Geng Road, Palo Alto, CA 94303; 415/852-2327
UseNet: {apple,ingr,pyramid,sri-unix}!garth!phipps
EcoNet: cphipps
Technical Details
Message-ID: <3557@garth.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!zaphod.mps.ohio-state.edu!van-bc!ubc-cs!uw-beaver!Teknowledge.COM!unix!garth!phipps
References: <1016@sdrc.UUCP> <1990Jan6.003158.2039@aqdata.uucp> <1024@sdrc.UUCP> <167@metapyr.UUCP> <15078@bfmny0.UU.NET> <16717@duke.cs.duke.edu> <1298@wrgate.WR.TEK.COM>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!zaphod.mps.ohio-state.edu!van-bc!ubc-cs!uw-beaver!Teknowledge.COM!unix!garth!phipps
From: phipps@garth.UUCP (Clay Phipps)
Newsgroups: comp.lang.misc
Subject: Obscure Expr. Optimization (Re: Educating FORTRAN programmers to use C)
Message-ID: <3557@garth.UUCP>
Date: 20 Jan 90 04:33:58 GMT
References: <1016@sdrc.UUCP> <1990Jan6.003158.2039@aqdata.uucp> <1024@sdrc.UUCP> <167@metapyr.UUCP> <15078@bfmny0.UU.NET> <16717@duke.cs.duke.edu> <1298@wrgate.WR.TEK.COM>
Reply-To: phipps@garth.UUCP (Clay Phipps)
Organization: Intergraph APD, in semiarid Palo Alto, CA
Lines: 76