Amber And Ubuntu Part 2. Amber10 (Parallel Execution) Installation In Ubuntu 8.10 (Intrepid Ibex) With OpenMPI 1.3… And Commentary

After considerable trial and building/testing errors, what follows is as simplified a complete installation and (non-X11/QM) testing of Amber10 and OpenMPI 1.3 as I think can be procedure’d in Ubuntu 8.10 (and likely previous and subsequent Ubuntu versions), dealing specifically with assorted issues with root permissions and variable definitions as per the standard procedure for Amber10 installation.

I’ll begin with the short procedure and bare minimum notes, then will address a multitude of specific problems that may (did) arise during all of the build procedures.  The purpose for listing everything, it is hoped, is to make these errors appear in google during searches so that, when you come/came across the errors, your search will have provided some amount of useful feedback (and, for a few of the problems I had with previous builds of other programs, this blog is the ONLY thing that comes up in google).

Some of the content below is an extension of the single-processor build of Amber10 I posted previously.  In the interest of keeping the reading to a minimum, the short procedure below is light on explanations that are provided in the long procedure that follows.  If you’re running on a multi-core computer (and who isn’t anymore), you likely want to take advantage of the MPI capability, so I would advise simply following the procedure below and IGNORING the previous post (as I also state at the top of the previous page).

Enough blabbering.

LEGEND

Text in black – my ramblings.

Text in bold preformatted red - things you will type in the Terminal

Text in green – text you will either see or will type into files (using pico, my preference)

Amber10, OpenMPI 1.3, Ubuntu 8.10: The Easy, Teenage New York Version

0a. I assume you’re working from a fresh installation of Ubuntu 8.10.  Some of what is below is Ubuntu-specific because of the way that Ubuntu decides to deal with the Root/Administrator/User relationship.  That said, much is the same and I’ll try to remark accordingly.

0b. As with the previous post, I am writing this with an expected audience of a non-technical Linux user, which means more detail of the steps and not just “cd $HOME and ./config -> make -> make install.”  If the steps are too obvious to you, find someone who thinks a Terminal window is one that won’t close and let them do it.  Speaking of…

0c. Everything below is done from a Terminal window.  The last icon you will use is the Terminal icon you click on.  If you’ve never had the pleasure in Ubuntu Desktop, go to Applications -> Accessories -> Terminal.  You can save yourself some time dragging around menus by hovering over the Terminal icon, right-clicking, and “Add this launcher to panel.”

0d. One more thing for the absolute newbies.  I am assuming that you’ve used Firefox to download OpenMPI 1.3, the AmberTools 1.2 and Amber10 bz2 files, and the bugfix.all files for AmberTools 1.2 and Amber10 (more on that in 0e).  That’s all you’ll need for the installation below.  Note that I’m not dealing with X11 (library specifications and other testing to do first), MKL (the Intel Math Kernel Library), or the GOTO BLAS libraries.  The default download folder for Firefox in a fresh installation of Ubuntu is the Desktop.  I will assume your files are on the Desktop, which will then be moved around in the installation procedure below.

0e. bugfix.all (Amber10) and bugfix.all (AmberTools 1.2) – Yes, the Amber people provide both of these files for the two different programs using the same name.  As I assume you’re using Firefox to download these files from their respective pages, I recommend that you RENAME the bugfix.all file for AmberTools 1.2 to bugfix_at.all, which is the naming convention I use in the patching step of the installation process (just to keep the confusion down).  In case you’ve not had the pleasure yet, instead of clicking on the bugfix.all link on each page and saving the file that loads, simply right-click and “Save Link As…”, then save the AmberTools 1.2 bugfix.all file as bugfix_at.all.

0f. This OpenMPI 1.3 build and series of Amber10 tests assumes SMP (symmetric multi-processing) only, meaning you run only with the CPUs on your motherboard.  The setup of OpenMPI for cluster-based computing is a little more complicated and is not presented below (but is in process for write-up).

0g. And, further, I am not using the OpenMPI you can install by simply sudo apt-get install libopenmpi1 linopenmpi-dev openmpi-bin openmpi-doc for two reasons.  First, that installs OpenMPI 1.2.8 (I believe), which mangles one of the tests in such a way that I feared for subsequent stability in Amber10 work I might find myself doing.  Second, I want to eventually be able to build OpenMPI around other Fortran compilers (specifically g95 or the Intel Fortran Compiler) or INSERT OPTION X and, therefore, prefer to build from source.

So, from a Terminal window, the mostly comment-free/comment-minimal and almost flawless procedure is as follows.  Blindly assume that everything I am doing, especially in regards to WHERE this build is occurring and WHAT happens in the last few steps, is for a good reason (explained in detail later)…

0. cd $HOME (if you’re not in your $HOME directory already or don’t know where it is)

1. sudo apt-get update (requires administrative password)

2. sudo apt-get install ssh g++ g++-multilib g++-4.3-multilib gcc-4.3-doc libstdc++6-4.3-dbg libstdc++6-4.3-doc flex bison fort77 netcdf-bin gfortran gfortran-multilib gfortran-doc gfortran-4.3-multilib gfortran-4.3-doc libgfortran3-dbg autoconf autoconf2.13 autobook autoconf-archive gnu-standards autoconf-doc libtool gettext patch libblas3gf liblapack3gf libgfortran2 markdown csh (this is my ever-growing list of necessary programs and libraries that are not installed as part of a fresh Ubuntu installation)

3. pico .bashrc

Add the following lines to the bottom of this file.  This will make more sense shortly…

AMBERHOME=$HOME/Documents/amber10/
export AMBERHOME

MPI_HOME=/
export MPI_HOME

Crtl-X and the Enter Key twice to Exit

4. source .bashrc

5. pico. profile

Add the following line to the bottom of this file.

PATH=”$HOME/Documents/amber10/exe:$PATH”

Crtl-X and the Enter Key twice to Exit

6. source .profile

7. mv $HOME/Desktop/Amber* $HOME/Documents/ (this assumes the downloaded files are on the desktop)

8. mv $HOME/Desktop/openmpi-1.3 $HOME/Documents/ (this assumes the downloaded files are on the desktop)

9. cd $HOME/Documents/

10. gunzip openmpi-1.3.tar.gz

11. tar xvf openmpi-1.3.tar

12. cd openmpi-1.3

13. ./configure –prefix=/ (installs the MPI binaries and libraries into /. Avoids library errors I ran across despite MPI_HOME, but may be fixable. Copious output to follow.  For my results, click HERE)

14. sudo make all install (this installs binaries and libraries into “/”. Copious output to follow.  For my results, click HERE)

15. cd $HOME/Documents/

16. tar xvjf Amber10.tar.bz2

17. tar xvjf AmberTools-1.2.tar.bz2

18. mv $HOME/Desktop/bugfix* $HOME/Documents/$AMBERHOME (moves bugfix files to the Amber directory)

19. cd $AMBERHOME

20. patch -p0 -N -r patch-rejects < bugfix_at.all (patches AmberTools)

21. patch -p0 -N -r patch-rejects < bugfix.all (patches Amber10)

22. cd src/

23. ./configure_at -noX11

24. make -f Makefile_at (copious output to follow.  For my results, click HERE)

25. cd ../bin/

26. pico mopac.sh

At the top of the file, change sh to bash

Crtl-X and the Enter Key twice to Exit

27. cd ../test/

28. make -f Makefile_at test (copious output to follow.  For my results, click HERE)

29. cd ../src/

30. ./configure_amber -openmpi gfortran

31. make parallel (copious output to follow.  For my results, click HERE)

32. cd $HOME/.ssh/ (at this step, we allow auto-login in ssh so that the multiple mpirun tests do not require that you supply your password constantly)

33. ssh-keygen -t dsa

34. cat id_dsa.pub >> authorized_keys2

35. chmod 644 authorized_keys2

36. cd $AMBERHOME/test/

37. csh

38. setenv DO_PARALLEL ‘mpirun -np N (here, N is the number of processors you wish to use on your mobo)

39. make test.parallel.MM (copious output to follow.  For my results, click HERE)

40. exit (exits the csh shell)

41. sudo cp -r $HOME/Documents/amber10 /opt/amber10

42. cd $HOME

43. rm -r $HOME/Documents/amber10 (this deletes the build directory.  Delete or keep as you like)

44. pico .bashrc

Make the following change to the bottom of this file.

AMBERHOME=/opt/amber10/

Crtl-X and the Enter Key twice to Exit

45. source .bashrc

46. pico .profile

Make the following change to the bottom of this file.

PATH=”/opt/amber10/exe:$PATH”

Crtl-X and the Enter Key twice to Exit

47. source .profile

That is it!  In theory, you should now have a complete and tested Amber10 and AmberTools 1.2 build sitting in /opt/amber10.

Amber10, OpenMPI 1.3, Ubuntu 8.10: The Notes

What follows is the complete list of problems, questions, errors, issues, and general craziness from much trial and error for the installation procedure above.  As you can guess from my constant mentioning of Ubuntu in my statements-with-qualifications, some of these problems likely will not occur in other distros.  My primary reason for the extended discussion below is so that the errors and issues make their way into google so that people searching for fixes to these problems (if they come across them) will see actual content (if they choose to read it) and maybe find a reasonable fix.

I’ll be expanding in sections by grouping numbers above.

0a – 0g Installation Preparations

I’ve not much to add here except that OpenMPI is likely not the only way to install MPI Amber10 in Ubuntu, but I think it is easier than MPICH2 to set up cross-cluster calculations on a switch’ed network.  My stronger preference for OpenMPI stems from both past positive experience with OpenMPI and GROMACS (specifically on my Macbook Pro) and eventual success with OpenMPI 1.2.X and Abinit 5.6.5.  I had hoped to use the same version of OpenMPI for GROMACS, Amber10, and Abinit, but ran into a yet-to-be-resolved issue with OpenMPI 1.3.x in the building of Abinit (the problem is, apparently, resolved in the upcoming 1.4.1 build, but I’m not much for using release candidates.  I’ll be discussing this in an upcoming Abinit installation post based on my previous Abinit installation post).

1 – 2 apt-get

My listed apt-get installation set contains many, many programs and libraries that are not necessarily needed in the OpenMPI and Amber10 build but are required for other programs.  The apt-get approach is still much cleaner than installing the entire OpenSuse or Fedora DVD, but you do find yourself scrambling the first time you try to install anything to determine what programs are missing.  You don’t know you need csh installed until the test scripts fail.  You forget about ssh until you run mpirun for the first time.  I do not yet know if MKL, GOTO, or any of the X11-based AmberTools programs require additional libraries to be installed, so the above apt-get list may grow.  Check the comments section at bottom for updates.

The list below shows essential programs and libraries AND their suggested additional installs. As long as you’re online and apt-get‘ing anyway, might as well not risk missing something for your next compiling adventure.

g++ g++-multilib  g++-4.3-multilib  gcc-4.3-doc  libstdc++6-4.3-dbg  libstdc++6-4.3-doc

gfortran gfortran-multilib gfortran-doc gfortran-4.3-multilib gfortran-4.3-doc libgfortran3-dbg

autoconf autoconf2.13 autobook autoconf-archive gnu-standards autoconf-doc libtool gettext

flex bison

ssh csh patch markdown fort77 netcdf-bin libblas3gf liblapack3gf libgfortran2

3 – 9 .bashrc and .profile Modifications, Building In Your Own Directory

For a number of programs, the procedure from source is ./configure, make, and make install, make install often only responsible for moving folders into the correct directories (specifically, directories only root has access to, such as /usr/local/bin, /lib, and /opt).  In many distributions, this final step is actually sudo make install.  This division of make and make install is not preserved in Amber, which complicates the Ubuntu build slightly.  The building in $HOME/Documents (as I’ve described the procedure above) saves you from having to constantly sudo the extraction and building process in directories you, the typical user, do not have access to write into.

Working in $HOME\Documents (or any of your $HOME folders) allows for the complete build and testing of AmberTools and Amber10.

The other benefit from doing as much in $HOME as possible is the lack of a need to define variables as the root user (specifically, AMBERHOME, MPI_HOME, and DO_PARALLEL) by setting variables in the root .bashrc and .profile files, adding lines to the Makefiles for AmberTools and Amber10, or setting variables at prompts.  This variable specification issue arises because when you run a program with sudo, you invoke the root privileges and the root variable definitions, so any specifications you make for your PATH or these Amber-specific variables are lost.

Once the build is complete in the $HOME/Documents folder, we move the entire directory into /opt, my default location for all programs I build from source (but $HOME/Documents is just fine as well once the PATH is set).

10 – 14 OpenMPI 1.3

So, why not then use OpenMPI 1.2.x?  The build of Amber10 works just fine with OpenMPI 1.2.x in Ubuntu with all of the installation specifications described in Step 2 of the short procedure (the extensive apt-get).  The problem with 1.2.x occurs for a single test after the Amber10 build that I’ve not yet figured out a workaround for, but the error is sinister enough that I decided to not risk similar errors in my own Amber work and, instead, use OpenMPI 1.3.x, which does not suffer the same error.  The only (ONLY) test to fail with OpenMPI 1.2.x is the cnstph (constant pH simulation) test, which runs perfectly well but fails at the close of the calculation (you can test this yourself by changing the nstlim value in the mdin file to any arbitrarily large number).  The failure message, which kills the test series, is below.  This job also fails if you simply try to run it independently of the pre-defined test set (not the make test.parallel.MM, but cd’ing into the cnstph directory, setting variables, and running the script).

==============================================================
cd cnstph && ./Run.cnstph
[ubuntu-desktop:18263] *** Process received signal ***
[ubuntu-desktop:18263] Signal: Segmentation fault (11)
[ubuntu-desktop:18263] Signal code: Address not mapped (1)
[ubuntu-desktop:18263] Failing at address: 0x9069d2cb0
[ubuntu-desktop:18264] *** Process received signal ***
[ubuntu-desktop:18265] *** Process received signal ***
[ubuntu-desktop:18265] Signal: Segmentation fault (11)
[ubuntu-desktop:18265] Signal code: Address not mapped (1)
[ubuntu-desktop:18265] Failing at address: 0x907031c70
[ubuntu-desktop:18264] Signal: Segmentation fault (11)
[ubuntu-desktop:18264] Signal code: Address not mapped (1)
[ubuntu-desktop:18264] Failing at address: 0x906dbdc00
[ubuntu-desktop:18263] [ 0] /lib/libpthread.so.0 [0x2b17b5bef0f0]
[ubuntu-desktop:18263] [ 1] /usr/local/lib/libopen-pal.so.0(_int_free+0x57) [0x2b17b4c10937]
[ubuntu-desktop:18263] [ 2] /usr/local/lib/libopen-pal.so.0(free+0xeb) [0x2b17b4c122bb]
[ubuntu-desktop:18263] [ 3] /home/userid/Documents/amber10/exe/sander.MPI(sander_+0x73ce) [0x4c6ec2]
[ubuntu-desktop:18264] [ 0] /lib/libpthread.so.0 [0x2abd8f5810f0]
[ubuntu-desktop:18264] [ 1] /usr/local/lib/libopen-pal.so.0(_int_free+0x57) [0x2abd8e5a2937]
[ubuntu-desktop:18264] [ 2] /usr/local/lib/libopen-pal.so.0(free+0xeb) [0x2abd8e5a42bb]
[ubuntu-desktop:18264] [ 3] /home/userid/Documents/amber10/exe/sander.MPI(sander_+0x73ce) [0x4c6ec2]
[ubuntu-desktop:18264] [ 4] /home/userid/Documents/amber10/exe/sander.MPI(MAIN__+0xf0a) [0x4bfa66]
[ubuntu-desktop:18264] [ 5] /home/userid/Documents/amber10/exe/sander.MPI(main+0x2c) [0x88309c]
[ubuntu-desktop:18264] [ 6] /lib/libc.so.6(__libc_start_main+0xe6) [0x2abd8f7ad466]
[ubuntu-desktop:18264] [ 7] /home/userid/Documents/amber10/exe/sander.MPI [0x43a649]
[ubuntu-desktop:18264] *** End of error message ***
[ubuntu-desktop:18263] [ 4] /home/userid/Documents/amber10/exe/sander.MPI(MAIN__+0xf0a) [0x4bfa66]
[ubuntu-desktop:18263] [ 5] /home/userid/Documents/amber10/exe/sander.MPI(main+0x2c) [0x88309c]
[ubuntu-desktop:18263] [ 6] /lib/libc.so.6(__libc_start_main+0xe6) [0x2b17b5e1b466]
[ubuntu-desktop:18263] [ 7] /home/userid/Documents/amber10/exe/sander.MPI [0x43a649]
[ubuntu-desktop:18263] *** End of error message ***
[ubuntu-desktop:18265] [ 0] /lib/libpthread.so.0 [0x2ba0032600f0]
[ubuntu-desktop:18265] [ 1] /usr/local/lib/libopen-pal.so.0(_int_free+0x57) [0x2ba002281937]
[ubuntu-desktop:18265] [ 2] /usr/local/lib/libopen-pal.so.0(free+0xeb) [0x2ba0022832bb]
[ubuntu-desktop:18265] [ 3] /home/userid/Documents/amber10/exe/sander.MPI(sander_+0x73ce) [0x4c6ec2]
[ubuntu-desktop:18265] [ 4] /home/userid/Documents/amber10/exe/sander.MPI(MAIN__+0xf0a) [0x4bfa66]
[ubuntu-desktop:18265] [ 5] /home/userid/Documents/amber10/exe/sander.MPI(main+0x2c) [0x88309c]
[ubuntu-desktop:18265] [ 6] /lib/libc.so.6(__libc_start_main+0xe6) [0x2ba00348c466]
[ubuntu-desktop:18265] [ 7] /home/userid/Documents/amber10/exe/sander.MPI [0x43a649]
[ubuntu-desktop:18265] *** End of error message ***
mpirun noticed that job rank 0 with PID 18262 on node ubuntu-desktop exited on signal 11 (Segmentation fault).
3 additional processes aborted (not shown)
./Run.cnstph:  Program error
make[1]: *** [test.sander.GB] Error 1
make[1]: Leaving directory `/home/userid/Documents/amber10/test’
make: *** [test.sander.GB.MPI] Error 2

Errors like this one scare me to no end, especially when the error seems to be in the proper termination of a process (such as writing final positions or data files) and you risk such errors occurring after 2 week simulations with no way to get your data back.  If you decide (if it’s already installed, for instance) to use OpenMPI 1.2.x with Amber10 but still want to test the build, I’d suggest simply commenting out (#) the line

# cd cnstph && ./Run.cnstph

from the Makefile in the ../test directory.  I can’t imagine this happens in all other distributions, but I also don’t know what the problem could be given that all of the other tests work just fine.  That said, there’s a failed test for the OpenMPI 1.3.x build as well when you forget to run the tests from csh, but that has nothing to do with OpenMPI (see below).

16 – 19 Building Amber10 and AmberTools At $HOME

As described in the 3 – 9 section above, the problem with not building in your $HOME directory is the passing of variables in the build processes.  For instance, if you set MPI_HOME in your $HOME .bashrc file and then sudo make parallel, the error you’ll see is

Starting installation of Amber10 (parallel) at Mon Mar  9 22:30:36 EDT 2009.
cd sander; make parallel
make[1]: Entering directory `/opt/amber10/src/sander’
./checkparconf
cpp -traditional -I/usr/local/include -P -xassembler-with-cpp -Dsecond=ambsecond -DBINTRAJ -DMPI  constants.f > _constants.f
/usr/local/bin/mpif90 -c -O3 -fno-range-check -fno-second-underscore -ffree-form  -o constants.o _constants.f
Cannot open configuration file /usr/share/openmpi/mpif90-wrapper-data.txt
Error parsing data file mpif90: Not found
make[1]: *** [constants.o] Error 243
make[1]: Leaving directory `/opt/amber10/src/sander’
make: *** [parallel] Error 2

because the MPI_HOME variable is not specified for root.  Performing the compilation in $HOME/Documents avoids this issue.

If you want to build Amber and AmberTools in /opt as root for some reason and do not want to deal with modifying the .bashrc and .profile files in /root, you can modify the appropriate Amber files to define the variables needed for both building and testing. For AmberTools testing, you need to define AMBERHOME, which you do at the top of Makefile_at.

cd ../test/

sudo pico Makefile_at

include ../src/config.h

AMBERHOME=/opt/amber10/
export AMBERHOME

test: is_amberhome_defined \

sudo make -f Makefile_at test

For the Amber10 build process, you would need to modify configure_amber at the top of the file to specify the MPI_HOME variable.

sudo pico configure_amber

#!/bin/sh
#set -xv

MPI_HOME=/
export MPI_HOME

command=”$0 $*”

For the Amber10 testing process, you would need to assign both AMBERHOME (so the tests know where to look for the executables) and DO_PARALLEL (so the tests know to use OpenMPI) at the top of the file.

cd ../test/

sudo pico Makefile

include ../src/config_amber.h

AMBERHOME=/opt/amber10
export AMBERHOME

DO_PARALLEL=mpirun -np 4
export DO_PARALLEL

SHELL=/bin/sh

It otherwise makes no difference at all how you choose to do things so long as the program gets built.  Much of the Ubuntu literature I’ve stumbled across attempts to make people avoid doing anything to change the root account settings, which was the approach I chose to use in the “Easy” procedure above.

20 – 21 Patching Amber10 and AmberTools 1.2

No surprises and not necessary for building.  Do it anyway.  And patch is included as one of the apt-get‘ed programs.  Simply be cognizant of the naming of the bugfix files (the directories are the same for both Amber10 and AmberTools and the patch is simply applied to the files it finds).

22 – 24 Building AmberTools

Your choices for the AmberTools build are fairly limited.  Via configure_at –help,

Usage: ./configure_at [flags] compiler

where compiler is one of:

gcc, icc, solaris_cc, irix_cc, osf1_cc

If not specified then gcc is used.

Option flags:

-mpi        use MPI for parallelization
-scalapack  use ScaLAPACK for linear algebra (utilizes MPI)
-openmp     Use OpenMP pragmas for parallelization (icc, solaris_cc,gcc(>4.2))
-opteron    options for solaris/opteron
-ultra2     options for solaris/ultra2
-ultra3     options for solaris/ultra3
-ultra4     options for solaris/ultra4
-bit64      64-bit compilation for solaris
-perflib    Use solaris performance library in lieu of LAPACK and BLAS
-cygwin     modifications for cygwin/windows
-p4         use optimizations specific for the Intel Pentium4 processor
-altix      use optimizations specific for the SGI Altix with icc
-static     create statically linked executables
-noX11      Do not build programs that require X11 libraries, e.g. xleap.
-nobintraj  Delete support for binary (netCDF) trajectory files
-nosleap    Do not build sleap, which requires unantiquated compilers.

Environment variables:
MKL_HOME    If present, will link in Intel’s MKL libraries (icc,gcc)
GOTO        If present, and MKL_HOME is not set, will use this location
for the Goto BLAS routines

We’re building gcc (default) with the above installs.  Running ./configure -noX11 with the apt-get-installed programs above should produce the following output.

Setting AMBERHOME to /home/userid/Documents/amber10

Testing the C compiler:
mpicc  -m64 -o testp testp.c
OK

Obtaining the C++ compiler version:
g++ -v
The version is ../src/configure
4.3.2
[: 520: 3: unexpected operator
OK

Testing the g77 compiler:
g77 -O2 -fno-automatic -finit-local-zero -o testp testp.f
./configure_at: 538: g77: not found
./configure_at: 539: ./testp: not found
Unable to compile a Fortran program using g77 -O2 -fno-automatic -finit-local-zero

Testing the gfortran compiler:
gfortran -O1 -fno-automatic -o testp testp.f
OK

Testing flex:
OK

Configuring netcdf; (may be time-consuming)

NETCDF configure succeeded.

The configuration file, config.h, was successfully created.

The next step is to type ‘make -f Makefile_at’

25 – 28 Testing AmberTools

As a quick head’s up, if you don’t have csh installed, your test will fail at the following step with the following error:

cd ptraj_rmsa && ./Run.rms
/bin/sh: ./Run.rms: not found
make: *** [test.ptraj] Error 127

Otherwise, you can see the output from my test set HERE.  Installing csh is much easier than modifying multiple Run scripts.

That said, the one fix I do perform is to modify the mopac.sh file only slightly in accordance with the post by Mark Williamson on the Vanderbilt University Amber Listserve (the first stumbling block a ran into during testing).

29 – 31 Building Parallel Amber10

Running ./configure_amber -openmpi gfortran should output the following:

Setting AMBERHOME to /home/userid/Documents/amber10

Setting up Amber configuration file for architecture: gfortran
Using parallel communications library: openmpi
The MKL_HOME environment variable is not defined.

Testing the C compiler:
gcc  -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2 -m64 -o testp testp.c
OK

Testing the Fortran compiler:
gfortran -O0 -fno-range-check -fno-second-underscore -o testp testp.f
OK

——   Configuring the netCDF libraries:   ——–

Configuring netcdf; (may be time-consuming)
NETCDF configure succeeded.
MPI_HOME is set to /

The configuration file, config_amber.h, was successfully created.

32 – 35 Automatic ssh Login

These step saves you from constantly having to input your password for the mpirun testing phase.  This strictness to password provision is because of ssh (and, because I have machines both online and accessible, I prefer to deal with setting up the ssh side right instead of not having that layer of security).  The first time you run mpirun, ssh will throw back at you the following:

The authenticity of host ‘userid-desktop (127.0.1.1)’ can’t be established.
RSA key fingerprint is eb:86:24:66:67:0a:7a:7b:44:95:a6:83:d2:a8:68:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘terahertz-desktop’ (RSA) to the list of known hosts.

Generating the automatic login file for ssh will look like the following:

Generating public/private dsa key pair.
Enter file in which to save the key (/home/userid/.ssh/id_dsa):
Created directory ‘/home/userid/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/userid/.ssh/id_dsa.
Your public key has been saved in /home/userid/.ssh/id_dsa.pub.
The key fingerprint is:
54:84:68:79:3b:ec:17:41:c9:96:98:10:df:4f:cc:42 userid@userid-desktop
The key’s randomart image is:
+–[ DSA 1024]—-+

36 – 40 Testing Amber10

If you’re not in csh, either this test fails…

cd rdc && ./Run.dip
if: Badly formed number.
make[1]: *** [test.sander.BASIC] Error 1
make[1]: Leaving directory `/home/userid/Documents/amber10/test’
make: *** [test.sander.BASIC.MPI] Error 2

or this one…

cd pheMTI && ./Run.lambda0
This test must be run in parallel
make: *** [test.sander.TI] Error 1

Again, re-writing scripts is far less fun than sudo apt-get install csh and forgetting about it.

41 – 47 Moving The Built Amber10 and AmberTools

The final sequence of steps moves the $HOME/Documents-built amber10 into /opt (if you choose to), removes the build from your $HOME directory, and resets your PATH and AMBERHOME variables in .bashrc and .profile, thereby completing the build process.

And Finally…

If questions are raised, comments are thought of, speed-ups identified, etc., please either send me an email or post them here.  Our concern as computational chemists should be making predictions and interpreting data, not making compilation errors and interpreting error messages.

en.wikipedia.org/wiki/X_Window_System
en.wikipedia.org/wiki/Quantum_mechanics
ambermd.org
www.open-mpi.org
www.ubuntu.com
www.google.com
www.somewhereville.com
www.somewhereville.com/?p=345
en.wikipedia.org/wiki/Message_Passing_Interface
en.wikipedia.org/wiki/Zappa_in_New_York
help.ubuntu.com/community/RootSudo
www.linux.org
help.ubuntu.com/community/UsingTheTerminal
www.mozilla.com/en-US/firefox
ambermd.org/AmberTools-get.html
www.bzip.org
www.intel.com/cd/software/products/asmo-na/eng/307757.htm
www.tacc.utexas.edu/resources/software/gotoblasfaq.php
ambermd.org/bugfixes.html
en.wikipedia.org/wiki/Symmetric_multiprocessing
en.wikipedia.org/wiki/Fortran
www.g95.org
www.intel.com/cd/software/products/asmo-na/eng/282048.htm
www.mcs.anl.gov/index.php
www.gromacs.org
www.apple.com/macbookpro
www.abinit.org
www.abinit.org/package/?text=5_6_5
www.open-mpi.org/community/lists/users/2008/12/7522.php
www.open-mpi.org/community/lists/users/2008/12/7531.php
www.open-mpi.org/community/lists/users/2008/12/7536.php
www.open-mpi.org/community/lists/users/2008/12/7539.php
www.open-mpi.org/nightly/trunk
www.opensuse.org/en
fedoraproject.org
en.wikipedia.org/wiki/C_shell
en.wikipedia.org/wiki/Secure_Shell
www.open-mpi.org/software/ompi/v1.2

Amber And Ubuntu Part 1. Amber10 (Serial Execution) Installation In Ubuntu 8.10 (Intrepid Ibex)

[15 March 2009: In case you miss it while searching, the MPI build of Amber is provided in a future link.  Check out www.somewhereville.com/?p=437 for installation and commentary.]

Ubuntu continues to be a pleasantly stable and very, very clean Linux distribution (although my last Ubuntu post about a minor glitch was only a few weeks ago).  That said, for the typical research user perhaps not used to dealing with either Linux distributions or code compilation, it may appear to be a little too clean.  In my previous learning endeavors with Fedora and OpenSuse, I often found myself installing the entire DVD for fear of missing an important library or some random program (almost entirely unnecessary after you learn your way around a distribution, but when your hard drives break the 200 GB point, what’s a waste of 5 GB when you don’t have to dig up the DVD again?).  With the standard Ubuntu installation and an internet connection, your only problem becomes determining which programs and libraries are needed to complete a compilation from source.

Posted here is a procedure for building a serial execution (not parallel, that is en route as part of an upcoming post) version of Amber10 under Ubuntu 8.10 (Server or Desktop, makes no difference), completed on all 15 of the Dell quad-core boxes that make up the contents of the Chemistry Department Learning Center in the new Life Sciences Building at Syracuse (the transition from Windows to Ubuntu is shown above because it looks neat).  Like a number of oft-employed computational chemistry programs, pre-compiled binaries can be hard to come by and, if you’ve never had to compile a program before, even more difficult to build on your own.  My hope is that, with only an Ubuntu 8.10 installation and an internet connection, the procedure below will walk you from download to execution.

About the procedure

The content below assumes a limited knowledge of Linux and is written in such a manner that people in the Chemistry Department at S.U. can, if they have to after I spontaneously combust, reinstall Amber10 and AmberTools.  If you find yourself asking “why is he spending so much time on such a trivial point?“, then consider yourself a 1334 hax0r or something and ignore everything in black.

This procedure is very likely general to Amber and AmberTools, but is specifically addressing the installation of Amber10 and AmberTools 1.2 in Ubuntu 8.10 with g95.  One never knows what may change in one or assorted programs.

LEGEND

Text in black – my ramblings.

Text in bold preformatted red - things you will type in the Terminal

Text in green – text you will either see or will type into files (using pico, my preference)

Step 0: Coming To Grips With sudo

The one aspect of Ubuntu that differs from most other Linux distributions is the differentiation between root, Administrator, and user right from the installation.  Whereas you set up the root user in Suse and Fedora as part of  the installation process, you set up an Administrator account during Ubuntu installation that is distinct from root.  As a result, if you do not set up the root account to perform installations and system-level modifications, you are left in the Administrator account to use the sudo (super-user do…) command to allow you, the Administrator, to build and install programs outside your home ($HOME) directory.

“Do I have to constantly sudo everything?”  No.  Accessing a pure “root” terminal for installations is straightforward after the root password is assigned, it is simply argued by many (including the Ubuntu wiki) that it is safer to use sudo.  If you want to go the root route, check out help.ubuntu.com/community/RootSudo.

Step 1. Install Ubuntu 8.10 Desktop or Server

Default installation, simply walk through the entire installation process.  If your machine requires DNS registering to dive into your subnet’s IP pool (as is the case at S.U.), this will be accomplished by simply opening a browser in most instances (and the standard install is set up for DHCP) after install. With the internet connection established, you’ll likely get a message in the upper right-hand corner (wait a few minutes if you need to) mentioning that updates are available.  Not necessary for the Amber build, but it never hurts to be current.

Step 2. Terminal

There’s no use in driving through the Applications drop box to get to a program you’ll be using as often as Terminal.  If you didn’t know it yet, go to Applications -> Accessories -> left-click-and-hold on the Terminal icon, then drag the icon to the panel (next to your handy Firefox icon, for instance) or right-click and “Add this launcher to panel.”

Step 3. apt-get

It is at this point that your internet connection becomes vital in Ubuntu.  In the words of Bruce Byfield

If any single program defines the Debian Linux project, that program is apt-get.

If you’re a research scientist hoping to build software from source, it’s about as an important an interface between Ubuntu and your programs as your neck is between your head and your body.  For building Amber10, you will need to install several programs (and associated libraries.  One required program, g95, is not get available by apt-get, but we’ll get to that later).  apt-get makes this process (nearly) painless.

At the Terminal window:

sudo apt-get update

This updates the package list in the apt-get database (and it is recommended that you run this regularly, as it is your connection to newly available and updated programs).

sudo apt-get install fort77 g++ flex csh patch

This installs four base programs and many additional programs and libraries. The fort77 (fortran) compiler is required for the compilation of AmberTools (1.2).  Installing g++, the GNU Compiler Collection, takes care of your C and C++ compiling requirements.  flex is a fast lexical analyzer generator.  As of this writing (and, admittedly, with little research under my belt), I do not know exactly how this is used in Amber, but I know it will not compile without it.  Finally, csh.  Yes, you need to install csh (I was stunned at first that it wasn’t already present).

NOTE 1: If you get an error related to hplip, see my previous post about fixing it.

NOTE 2: In my google travels, I discovered a page (that now I can’t find.  How sad is that?) that used gfortran in a previous version of AmberTools (1.0, I think).  I started with gfortran out of ignorance of the apt-get for g77 and, because I did not want to deal with modifying installation scripts, simply placed a link from gfortran to g77 in the /usr/bin folder.  This compiles AmberTools 1.2 just fine, but g77 is specifically required to pass all of the tests for AmberTools (in the flags), so my seemly crafty ln -s trick failed me miserably.  Your life is made much easier by apt-get’ing g77 and it is my expectation that I’m the only person on the planet that tried to use gfortran for compiling AmberTools 1.2 in Ubuntu in such a cavalier manner.

Step 4: .bashrc and .profile Modifications

These next two steps (1) define the location of AMBERHOME (specifying for those programs that call “$AMBERHOME” to “look in … directory”) and (2) add the amber10 directory to your path (so you need only type “antechamber” and not “/opt/amber10/bin/antechamber“, etc.).  Both .bashrc and .profile (yes, I’m a bash user) are in your $HOME directory (simply typing “cd” will return you to $HOME and it is where the Terminal window starts you).

pico .bashrc

Into .bashrc, place the following (at bottom, just to keep track of the changes you make)

AMBERHOME=/location/to/amber10
export AMBERHOME

Crtl-X, The Enter Key twice, and done.

To make these changes to your account,

source .bashrc

In the interest of keeping track of where I install programs on a machine, I tend to use the /opt directory, which Perry thinks is crazy.  You may see /usr/local, /usr/local/bin, or various combinations thereof in your web searching travels.  If you’re new to Linux, you’ll blindly do what I did because you’re concerned that something below will rely on something being in /opt.

pico .profile

Into .profile, place the following (at bottom, just to keep track of the changes you make)

PATH=”/location/to/amber10/exe:$PATH”

Again, mine would be /opt/amber10/exe

Crtl-X, The Enter Key twice, and done.

To make these changes to your account,

source .profile

Step 5. Installing g95

The g95 program is an open source fortran compiler with support for f90 and f95.  I found myself NOT using CPMD a few years ago because I could not find a free f90 compiler (this was before the Intel Fortran Compiler became available for Linux) and am very happy that g95 has matured as of late.  That said, there is no apt-get for it yet, so you need to install this the olde-fashioned way.  With its Debian underpinnings, the Ubuntu g95 installation is trivial.  You need only be cognizant of whether you installed the 32-bit or 64-bit versions of Ubuntu.  If you don’t know, it will be obvious when you go to build Amber10 (and you can simply install the other flavor over the old one).

At g95.org/downloads.shtml#CS, you will find the current snapshots for various flavors and installation formats for g95.  You either want to download the Linux x86 (Debian) or the Linux x86-64 (Debian) packages.  If you’re using Firefox in Ubuntu, your download folder should be your Desktop.  Sticking to the Terminal, simply type the following:

cd ~/Desktop

to go to the Desktop Folder in your $HOME directory

sudo dpkg -i g95-x86.deb

if you downloaded with the intent of installing the 32-bit version, or

sudo dpkg -i g95-x86_64.deb

if you downloaded with the intent of installing the 64-bit version

The dpkg program is Debian’s equivalent of Redhat’s rpm (and vice versa).  It will extract the contents of a .deb file and place all of the executables and libraries in their proper folders PROVIDED you remember the sudo.  If you do not use the .deb package and decide to install from the .tgz file, you may find yourself having to copy libraries and executables into relevant directories.  If possible, stick with dpkg.

Ignorable Aside:

I did not use dpkg on my first pass of installations on the Learning Center machines above and had to go through the following steps to properly use g95 (which will fail with far harsher error messages than shown below).  The steps below extract the .tgz g95 file you download from the website (g95-x86-linux.tgz), move the executable f951 to a directory already in your path and copies all of the associated libraries into path libraries (the “1:30 am frustration” fix).  Do you see the benefit of dpkg!?

sudo mkdir /usr/local/bin/g95

makes the base g95 directory

sudo mv ~/Desktop/g95-x86-linux.tgz /usr/local/bin/g95

moves the downloaded g95-x86-linux.tgz to /usr/local/bin/g95

cd /usr/local/bin/g95
sudo tar xvjf g95-x86-linux.tgz

extracts g95-x86-linux.tgz, makes the directory g95-install

sudo mv g95-install/* /usr/local/bin/g95

moves all of the g95 files out of the g95-install directory (not mandatory)

sudo ln -s /usr/local/bin/g95/bin/*g95* /bin/g95

creates a link to the g95 executable that is placed into /bin (in the PATH)

sudo cp lib/gcc-lib/i686-suse-linux-gnu/4.0.3/f951 /bin

places a copy of f951 into /bin

sudo cp lib/gcc-lib/i686-suse-linux-gnu/4.0.3/*.o /usr/lib

places a copy of all files *.o into /usr/lib

sudo cp lib/gcc-lib/i686-suse-linux-gnu/4.0.3/*.a /usr/lib

places a copy of all files *.a into /usr/lib

NOTE: You do not need to type all of lib/gcc-lib/i686-suse-linux-gnu/4.0.3/.  Simply start the name and hit the TAB key to fill in the rest.  You’re welcome.

Now, if you install the wrong build of g95 for your version of Ubuntu (32 instead of 64, 64 instead of 32), you will likely see an error at the Amber10 compilation stage (down below) that looks like:

Testing the Fortran compiler:
g95 -O0  -fsecond-underscore -o testp testp.f
/tmp/ccUG0LYy.s: Assembler messages:
/tmp/ccUG0LYy.s:11: Error: suffix or operands invalid for `push’
./configure_amber: 1169: ./testp: not found
Unable to compile a Fortran program using g95 -O0  -fsecond-underscore
Please check your compiler settings or configure flags.

At this point, simply download the OTHER version of g95 and dpkg -i it.

Step 6. Extract Amber and AmberTools

You should have already downloaded Amber10.tar.bz2 and AmberTools-1.2.tar.bz2 with your confirmation-of-purchase email.  I will assume that you’ve downloaded a fresh copy in Ubuntu so that both files are sitting on your Desktop.

sudo cp ~/Desktop/Amber* /opt
cd /opt
sudo tar xvjf Amber10.tar.bz2

will make a folder amber10 in opt/

sudo tar xvjf AmberTools-1.2.tar.bz2

will extract AmberTools-1.2 into the previously created amber10 folder

Step 7. Build and Test AmberTools 1.2

My 7th grade math teacher and one-time musical director Mr. Marshall Nye used to tell us that “Fools rush in where angels fear to tread,” this obviously in reference to the manifold ways in which 7th graders had previously attempted to short-cut polynomial expansion in homework assignments.  I’d say a good 2 hours were spent dealing with foolish issues to streamline what is provided below and it is by no means guaranteed that the below will work flawlessly for you (unless you start with a pristine Ubuntu 8.10 install and do everything above exactly as typed, in which case you should be good to go).

cd $AMBERHOME

This takes you to /opt/amber10 or wherever else you defined the AMBERHOME directory to be

cd amber10/src

Enter the source directory for AmberTools

sudo ./configure_at gcc

This runs the configure script for AmberTools and specifies to use gcc flags (the compilers we installed with g77 and g++).  If you’re using other compilers, you probably don’t need this blog post anyway.  Your output should look as follows:

Setting AMBERHOME to /opt/amber10

Warning: the X11 libraries are not in the usual location !
To search for them try the command: locate libXt
On Fedora Core 5 install an xorg-x11-devel package.
On RedHat8 install an XFree86-devel package.
For the moment Amber will be configured not to build XLEaP.

Testing the C compiler:
gcc  -m64 -o testp testp.c
OK

Obtaining the C++ compiler version:
g++ -v
The version is 4.2.3
OK

Testing the g77 compiler:
g77 -O2 -fno-automatic -finit-local-zero -o testp testp.f
OK

Testing flex:
OK

Configuring netcdf; (may be time-consuming)

NETCDF configure succeeded.

The configuration file, config.h, was successfully created.

The next step is to type ‘make -f Makefile_at’

sudo make -f Makefile_at

This builds the AmberTools programs.  This may take some time but provides plently of on-screen feedback.  To see what an otherwise flawless installation looks like, you can view my output HERE.

After the build is complete, we run the tests.  This was a MAJOR hassle for me for three reasons.

FIRST, sudo make test would fail instantaneously because it decided that AMBERHOME had not been defined, despite it being defined above.  I remedied this by not fully diagnosing the problem but instead simply adding two lines to the top of Makefile_at (see below).

SECOND, a linked gfortran is NOT the same thing as g77 to the test scripts and I spent a considerable amount of time re-writing and commenting out scripts before doing the obvious and looking-for-and-installing g77. This is fixed with proper g77 installation.

THIRD, the test sequence would come to a screeching halt at the ./Run.tp section of the script.  After much searching, I found a page that described the fix and am grateful to Mark Williamson for posting this on the Amber listserve at structbio.vanderbilt.edu/archives/amber-archive/2008/3476.php.

We’ll deal with FIRST:

cd $AMBERHOME/test
sudo pico Makefile_at

To the almost-top of this file, I added two lines to re-define AMBERHOME, getting around my initial error.  My top 6 lines then looked like the following:

include ../src/config.h

AMBERHOME=/opt/amber10
export AMBERHOME

test: is_amberhome_defined \

Crtl-X, The Enter Key twice, and done.

Now the THIRD:

The file mopac.sh is written into /location/of/amber10/bin/.  We take care of all of the test issues associated with this file by changing the shell called at the top of the file.

sudo pico /opt/amber10/bin/mopac.sh

Change

#!/bin/sh

to

#!/bin/bash

Crtl-X, The Enter Key twice, and done.

If you want to know much more, have a read of structbio.vanderbilt.edu/archives/amber-archive/2008/3476.php.  I understand what’s at issue, but my only concern is that it worked.

You should still be in $AMBERHOME/test at this point (you can cd $AMBERHOME/test if you’re not).  Run those tests!

sudo make -f Makefile_at test

If you tried the gfortran trick for g77, you will notice the error at the cd antechamber/tp && ./Run.tp portion of the script (expectedly, at the first instance of .hasG77:).  These will take a while but confirm that nothing got butchered in the AmberTools build.  To see what an otherwise flawless installation looks like, you can view my output HERE.

Step 8. bugfix.all

I’m making this its own step so that you don’t forget to do it.

download bugfix.all from ambermd.org/bugfixes10.html

sudo cp ~/Desktop/bugfix.all $AMBERHOME
sudo patch -p0 -N -r patch-rejects < bugfix.all

This will result in a small amount of on-screen output.  To compare and contrast with mine, see HERE.

Step 9. Build and Test Amber10

Finally!  Nearing completion with only one problem discovered in the test sequence.

cd $AMBERHOME/src
sudo ./configure_amber -gnucompat g95

You may or may not find considerable discussions about how much faster Amber10 execution is by using other compilers instead of the gcc variety.  As you should be spending money on hardware and minimizing your software costs, I say go with gcc all the way (unless you’re offering).  Your output for this step should look like the following:

Setting AMBERHOME to /opt/amber10

Setting up Amber configuration file for architecture: g95
Using parallel communications library: none
The MKL_HOME environment variable is not defined.

Testing the C compiler:
gcc  -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2 -m64 -o testp testp.c
OK

Testing the Fortran compiler:
g95 -O0  -fsecond-underscore -o testp testp.f
OK

——   Configuring the netCDF libraries:   ——–

Configuring netcdf; (may be time-consuming)
NETCDF configure succeeded.

The configuration file, config_amber.h, was successfully created.

sudo make serial

Again, making a serial (one processor) set of executables.  This will take a while and provide plenty of on-screen feedback.  To see what an otherwise flawless installation looks like, you can view my output HERE.

cd $AMBERHOME/test
sudo make test

I ran into failures of script (not of testing, but of the actual script) at Run.pbpgb. The output is as below.

cd pb_pgb && ./Run.pbpgb
./Run.pbpgb: line 3: syntax error near unexpected token `set’
./Run.pbpgb: line 3: `if( ! $?TESTsander ) set TESTsander = “http://www.somewhereville.com/exe/sander”‘
make: *** [test.sander.BASIC] Error 2

I’ve found nothing about it online and have not yet found out what the problem is so, in the interest of getting the rest of this instruction set posted, I simply commented out the problematic lines and ran the rest of the tests otherwise flawlessly.  The commented Makefile will look like the following (simply not running anything related to pb_).

cd $AMBERHOME/test
sudo pico Makefile

Search down the file and add three # such that the lines look like the following:

cd trajene && ./Run.trajene
cd alp && ./Run.alp
#    cd pb_pgb && ./Run.pbpgb
#    cd pb_ivcap1 && ./Run.pb_ivcap1
#    cd pb_ivcap5 && ./Run.pb_ivcap5
cd umbrella && ./Run.umbrella
cd noesy && ./Run.noesy

Crtl-X, The Enter Key twice, and done.

You can see the results of my otherwise flawless tests HERE.

Final thoughts…

The parallel version is en route as I complete the installation of a new cluster and install mpi.  It will not differ much from the above, save the inclusion of an additional flag or two in the two ./configure scripts for AmberTools and Amber10.  If questions are raised, comments are thought of, speed-ups identified, etc., please either send me an email or post them here.  Our concern as computational chemists should be making predictions and interpreting data, not making compilation errors and interpreting error messages.

www.ubuntu.com
www.linux.org
www.somewhereville.com/?p=149
fedoraproject.org
www.opensuse.org/en/
ambermd.org
www.dell.com
chemistry.syr.edu
thecollege.syr.edu/lifesciences/about.html
www.syr.edu
www.microsoft.com
en.wikipedia.org/wiki/Spontaneous_human_combustion
en.wikipedia.org/wiki/Sudo
help.ubuntu.com/community/RootSudo
en.wikipedia.org/wiki/Domain_name_system
en.wikipedia.org/wiki/Dhcp
help.ubuntu.com/community/UsingTheTerminal
www.mozilla.com/en-US/firefox
members.axion.net/~bbyfield
www.linux.com/feature/113879
www.g95.org
www.debian.org/doc/manuals/apt-howto
www.gnu.org/software/fortran/fortran.html
gcc.gnu.org
flex.sourceforge.net
en.wikipedia.org/wiki/C_shell
hplipopensource.com/hplip-web/index.html
www.google.com
en.wikipedia.org/wiki/Bash
www.piermont.com
www.cpmd.org
www.intel.com/cd/software/products/asmo-na/eng/282048.htm
www.us.debian.org
g95.org/downloads.shtml#CS
en.wikipedia.org/wiki/Dpkg
en.wikipedia.org/wiki/RPM_Package_Manager
en.wikipedia.org/wiki/Fools_Rush_In_(Where_Angels_Fear_to_Tread)
en.wikipedia.org/wiki/Polynomial_expansion
structbio.vanderbilt.edu/archives/amber-archive/2008/3476.php
ambermd.org/bugfixes10.html