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

From: Ross Walker <ross.rosswalker.co.uk>
Date: Sun, 18 Mar 2012 18:39:42 -0700

If I remember rightly one of the issues with using '-fast' was that it
implies -static and there is no way to turn this off. This means unless you
build your mpi installation specifically to support static linking then you
can't build the parallel version of the code using -fast. That is a BIG let
down with the -fast option unfortunately and I never found a way to fix it.
:-(

> -----Original Message-----
> From: Scott Brozell [mailto:sbrozell.rci.rutgers.edu]
> Sent: Sunday, March 18, 2012 2:32 PM
> To: AMBER Developers Mailing List
> Subject: Re: [AMBER-Developers] SSE-based compile flags for intel
>
> Hi,
>
> 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 ?
>
>
> On Sun, Mar 18, 2012 at 10:00:18AM -0700, Ross Walker wrote:
> > I think this is mostly historical divergence.
> >
> > Ideally we should have:
> >
> > old compilers = -fast
> >
> > new compilers = -ipo -xhost
>
> Why ? -fast for version 12 equals
> -ipo -O3 -no-prec-div -xHost -static
>
> scott
>
>
> > The issue is that -fast enables -ipo by default and this caused
> compiler
> > crashes when trying to link pmemd. Thus pmemd was switched back to -
> ip -O3
> > -xP
> >
> > I am not sure when it got changed to -xP though. For new compilers
> (11 and
> > newer?) you just specify -xhost and it will use the optimum vector
> > parameters for the host you are compiling on. This means it won't run
> on
> > different chip versions so causes problems with people with
> heterogeneous
> > clusters but maybe we shouldn't worry about that and let them figure
> it for
> > themselves?
> >
> > Otherwise we have to specify all of the SSE vectorization options and
> the
> > problem is that Intel keeps changing the options as well as the
> syntax with
> > every compiler.
> >
> > For the pre 11 compilers I think one uses the -xAAA options. Here -x
> means
> > create vector code only. -ax also means generate generic x86 code.
> Thus -axP
> > will make an executable that always works but it will only run fast
> on chip
> > versions that support the 'P' vectorization options. Once can try to
> add
> > them all which is what is in sander and is probably what SHOULD be in
> pmemd.
> > So for intel <11 it should probably be:
> >
> > -ip -O3 -axSTPW
> >
> > I 'think' this will work with all ifort versions from 9 to 10 and
> should be
> > optimum performance (although a massive executable) on most Intel and
> AMD
> > chips exluding the latest Sandybridge chips but I think one should
> probably
> > use ifort v12 for those anyway which would then use -xhost since from
> 11
> > onwards it changed to /QhostBLAH in which case we should just use -
> xhost and
> > let the compiler figure it automatically.
> >
> > All the best
> > Ross
> >
> > > -----Original Message-----
> > > From: case [mailto:case.biomaps.rutgers.edu]
> > > Sent: Sunday, March 18, 2012 5:51 AM
> > > To: amber-developers.ambermd.org
> > > Subject: [AMBER-Developers] SSE-based compile flags for intel
> > >
> > > Does anyone understand why we use the flags we do for Intel
> compilers?
> > >
> > > For sander, we have -ip -O3 -axSTPW; for pmemd, it is -ipo -O3 -no-
> > > prec-div
> > > -xP. Is there a good reason for the difference?
> > >
> > > For me, with intel compiler 10.1, pmemd with the default install
> > > creates
> > > an unusable executable ("Fatal Error: This program was not built to
> run
> > > on the processor in your system. The allowed processors are:
> Intel(R)
> > > Pentium(R) 4 and compatible Intel processors with Streaming SIMD
> > > Extensions 3 (SSE3) instruction support.)
> > >
> > > Rather oddly(?), pmemd.amoeba, which seems to be compiled with the
> same
> > > options, is OK. (Code for pmemd.amoeba has changed very little
> from
> > > Amber
> > > 11).
> > >
> > > If I change -xP to -axP, pmemd is fine for ifort 10.1.
> > >
> > > So: why are sander optimizations different than pmemd? Are we
> > > somewhere near
> > > optimal? Do users really need to learn the ins and outs of
> SSE_TYPES?
> > > What
> > > is the best thing to do for pmemd on ifort 10? (e.g. would
> changing -
> > > xP to
> > > -axP do harm on ifort 11 or 12?)
> > >
> > > ...thx...dac
>
> _______________________________________________
> AMBER-Developers mailing list
> AMBER-Developers.ambermd.org
> http://lists.ambermd.org/mailman/listinfo/amber-developers


_______________________________________________
AMBER-Developers mailing list
AMBER-Developers.ambermd.org
http://lists.ambermd.org/mailman/listinfo/amber-developers
Received on Sun Mar 18 2012 - 19:00:03 PDT
Custom Search