Tuesday, 13 March 2007

amber v8 compile on mott2:

1. download files from http://www.pgroup.com/resources/amber/amber8_pgi60.htm

2. run: ./configure -mpich -opteron -acml -lapack pgf90

make -e YACC="/usr/bin/bison -y" X11LIBDIR="lib64" parallel

for amber v9 on cluster and mott2

Whenever you see this type of message:

/usr/bin/ld: skipping incompatible
/home/ytang/gdata/whli/openmpi/lib/libmpi_f90.a when searching for -lmpi_f90
/usr/bin/ld: cannot find -lmpi_f90

It means that the type of executable you are building (32 bit vs 64 bit)
does not match with the way the library you are linking against was built. I
suspect that you build openmpi using pgf90 running in 64 bit mode. However,
at the time of Amber9's release the latest pgf90 version was pgf90 6.1-3
64-bit target on x86-64 Linux - this has numerous bugs in the 64 bit
implementation and as a result the amber executables fail a large number of
the test cases. We managed to work around this problem by forcing 32 bit
compilation with the Portland group compilers on x86_64 architectures. This
means that you need to build MPI in 32 bit as well (-tpp7). However, my
advice to you on Opteron is, suprisingly enough, to download the Intel
compilers (the em64t ones) and use these. These will build amber and pmemd
fine in 64 bit mode and will probably run faster (Get version 9.0.033 from
premier.intel.com after you setup an account).

For pmemd the problem is that the configure script is looking for mpich and
not openmpi - the installations have very different library names. I don't
think there is a configure option available for openmpi - perhaps Bob Duke
can comment further. For the moment I would edit the config.h and replace
the MPI_LIBS line with:

-L$(MPI_LIBDIR) -lmpi_f90 -lmpi -lorte -lopal -lutil -lnsl -lpthread -ldl
-Wl,--export-dynamic -lm -lutil -lnsl -lpthread -ldl

This should probably work. Note, pmemd 'does' work with the Portland group
compiler in 64 bit mode, although I have not rigorously tested it to be sure
of this. This means that if you want to build both Sander and PMEMD with the
Portland group compilers you will need to either build both a 32 bit and a
64 bit version of openmpi or edit pmemd's config.h and add -tp p7 to the
F90_OPT_* lines to force 32 bit compilation.

Note if you have a different Portland group compiler to 6.1-3 you could
always try compiling sander in 64 bit mode - just edit the
$AMBERHOME/src/config.h file and just delete the -tp p7 and change all
occurances of -m32 to -m64. Just make sure you run ALL of the test cases and
carefully check the output.

No comments: