[Fwd: Re: Polyhedron benchmark on Opteron]

Steve Kargl sgk@troutmask.apl.washington.edu
Fri Sep 29 23:29:00 GMT 2006


On Sat, Sep 30, 2006 at 12:58:20AM +0200, Tobias Burnus wrote:
> Hi,
> 
> FX Coudert wrote:
> > Relaying Tobias' mail, as he is having problems with the mailing-list...
> Trying yet another method to post ...
> 
> >> ISET(1) = huge(ISET)
> >> do i=1,nodes
> >>   if(iset(1) > dtemp(1)) iset(1) = i
> >> end do
> >>
> > 
> > Isn't it iset > dtemp(i)? Otherwise, I do understand why the compiler
> > can gain so much time :)
> 
> Ups. This comes from posting from a different computer than running the
> program and typing in the changes. I actually used
>    if(iset(1)>dtemp(i)) iset(1) = i
> 
> 
> > Otherwise, I do understand why the compiler can gain so much time.
> 
> Try it yourself. I don't understand it either, but it seems to be indeed
> the case. (Actually, I really wonder why no other compiler is inlining
> it, if the gain is that big. -- gfortran would be then 5 times as fast
> as Absoft or Pathscale?!?)
> 
> After doing these changes, Intel is again faster: 0.58s instead of
> gfortran's 1.233s.
> 

Are you sure the two piece of code are equivalent?

   ISET = MINLOC(DTEMP)

   by

   ISET(1) = huge(ISET)
   do i=1,nodes
      if(iset(1) > dtemp(i)) iset(1) = i
   end do

I'll need to go read the code, but I would have thought you
would need some like

   tmp = huge(dtemp)
   do i = 1, nodes
      if (tmp > dtemp(i)) then
         tmp = dtemp(i)   ! Small current smallest value for next comparison.
         iset(1) = i      ! Save the current index.
      end if
   end do



-- 
Steve



More information about the Fortran mailing list