Re: [AMBER-Developers] SSE-based compile flags for intel

From: Scott Brozell <sbrozell.rci.rutgers.edu>
Date: Tue, 20 Mar 2012 15:23:52 -0400

Hi,

On Tue, Mar 20, 2012 at 08:24:35AM -0400, David A Case wrote:
> On Sun, Mar 18, 2012, Scott Brozell wrote:
> >
> > The -xP for pmemd is clearly wrong as your build demonstrates.
> > Assuming some compilers for pmemd still cannot handle -ipo then
> > the only difference between pmemd and sander should be -ip vs -ipo.
> > However, assuming -ipo doesn't enhance sander then we arrive at
> > -ip -O3 -no-prec-div -xHost
> > for versions 11 and 12.
> > For older versions:
> > -ip -O3 -no-prec-div -axSTPW
> > (So the difference between mine and Ross's is -no-prec-div
> > which is supported at least back to 9.1.)
> >
> > Ideally we should be using -fast for all versions and programs
> > (and be ignoring heterogenous platforms).
> > I built amber11 pmemd with 12.1.0 and
> > -ipo -O3 -no-prec-div -xSSE4.2 -static-intel
> > which is almost equivalent to -fast (-static-intel vs -static a local issue)
> > So has anyone tried to build amber12 pmemd with fast on new compilers ?
> > Perhaps we should just use -fast for new compilers ?
> > Perhaps we should break equilvalence between sander and pmemd
> > and use -fast for sander ?
>
> Can you make a proposed patch to configure2 that people could evaluate? We
> need something specific here.

Well the intel section in configure2 is ~250 lines !
A conservative approach would be to just fix the pmemd opts:
it's only broken for pre version 11;
according to the ifort man page the right default is always used on macs;
the windows section looks wrong or at least unoptimal, but i ignore it;
per this thread, i use -ax instead of -x to get the generic IA-32 code path
and the full list of processor codes that work on both ia32 and x86_64:

diff --git a/AmberTools/src/configure2 b/AmberTools/src/configure2
index 618e705..61dfe14 100755
--- a/AmberTools/src/configure2
+++ b/AmberTools/src/configure2
.. -973,7 +973,7 .. intel)
             if [ "$ifort_version" -ge 11 ]; then
                pmemd_foptflags='-ipo -O3 -mdynamic-no-pic -no-prec-div -xHost'
             else
- pmemd_foptflags='-ipo -O3 -mdynamic-no-pic -no-prec-div -xP'
+ pmemd_foptflags='-ipo -O3 -mdynamic-no-pic -no-prec-div'
             fi
          elif [ "$processor" = "ia64" ]; then
             pmemd_coptflags='-ipo -O3'
.. -982,12 +982,12 .. intel)
             if [ "$icc_version" -ge 11 ]; then
                pmemd_coptflags='-ipo -O3 -no-prec-div -xHost'
             else
- pmemd_coptflags='-ipo -O3 -no-prec-div -xP'
+ pmemd_coptflags='-ipo -O3 -no-prec-div -axSTPW'
             fi
             if [ "$ifort_version" -ge 11 ]; then
                pmemd_foptflags='-ipo -O3 -no-prec-div -xHost'
             else
- pmemd_foptflags='-ipo -O3 -no-prec-div -xP'
+ pmemd_foptflags='-ipo -O3 -no-prec-div -axSTPW'
             fi
          fi
       fi


I've been testing a more aggressive approach, ie, using fast without
the static part on all of amber. it works for ifort 12.1 without
showing any test diffs.(!) for other intel versions its slow going
due to misstarts, slow machines, inode issue, sigh

scott


_______________________________________________
AMBER-Developers mailing list
AMBER-Developers.ambermd.org
http://lists.ambermd.org/mailman/listinfo/amber-developers
Received on Tue Mar 20 2012 - 12:30:02 PDT
Custom Search