Installing Desmond-2.0.4-0 on a 64-bit AMD Opteron Cluster running CentOS 5 Linux

Developed by D.E. Shaw Research, Desmond performs high-speed molecular dynamics simulations of biological systems using parallel algorithms and numerical techniques. The README.txt explains the horror that will prevail...

Unfortunately, the Desmond software distribution is not provided in a form that lends itself to easy compilation and installation. The reason for this is that internally DESRES uses a custom build environment that we have not been able to make available in this release, though it may be available later.

We have also not yet found time to create a more conventional build environment based on generally available tools (for example, the GNU autotools system). It is possible that this will be done for a future release of the software.

This is just the beginning. Let's have a look at what else is required:

  • The GNUmakefile used to build Desmond is designed to run only with a specific version of the GNU make utility. That version is 3.81. It is possible that later versions of GNU make will also work...
  • Desmond can be compiled to run as an MPI parallel application. Currently, the only version of MPI supported is Open MPI 1.2.7. It is very likely that other versions of Open MPI 1.2.x and 1.3.x will also work...
  • Desmond requires version 1_37_0 of the Boost library...
  • Desmond supports only version 2.5.x of Python, specifically version 2.5.1.

You'll also require NUMPY and VMD.

There is an expectation that you should engage in some fine-grained modifications to the GNU Makefile

Examine the GNUmakefile in the $DESMOND_PREFIX directory. You will see that a number of directory locations must be given to specify the locations where the Boost, Open MPI, and other software is installed on your system.

And then run.. make -f GNUmakefile

But we have a better plan... Let's make a textfile called buildme and make it executable (chmod +x buildme). It has the following:

. /etc/profile.d/
module purge
module load openmpi-gcc
module load gcc
module load python
make -f GNUmakefile MPI=openmpi PYTHON_PREFIX=/usr/local/python/2.6.1-gcc OPENMPI_PREFIX=/usr/local/openmpi/1.3.2-gcc BOOST_PREFIX=/usr/local/boost/1.37.0-gcc VMD_PREFIX=/usr/local/vmd/1.8.6 NUMPY_PREFIX=/usr/local/python/2.6.1-gcc BOOST_SERIALIZATION=boost_serialization-gcc41-mt BOOST_IOSTREAMS=boost_iostreams-gcc41-mt -j4 BOOST_INCL=/usr/local/boost/1.37.0-gcc/include/boost-1_37/ PYTHON_INCL=/usr/local/python/2.6.1-gcc/include/python2.6 PYTHON_VERSION=2.6

Notice how we're using Python 2.6.1 and OpenMPI 1.3.22.. We live on the cutting edge here! Run buildme

Also you'll need to modify the GNUMakefile at around line 1011, so linking can actually occur for non-static installs i.e.,

desmond_library = $(odir)/lib/lib$(desmond_library_basename).so
# Add exe_LDLIBS so linking can actually occur for non-static!
desmond_libraries = $(desmond_library)
libset = $(LDloc) -lDesmond
LDloc = -L$(odir)/lib -Wl,-rpath,'$$ORIGIN'/../lib
LD2loc = -L$(odir)/lib -Wl,-rpath,'$$ORIGIN'/../../lib
LDtloc = -L$(odir)/lib -Wl,-rpath,'$$ORIGIN'/$(shell echo ./$(@D) | sed -e 's;$(odir)/test;;' -e 's/[^/]*/../g')/lib

Nota bene: OK, it doesn't work (yet). Another discovery... the make clean command in Desmond doesn't really do what it's supposed to. You'll have to delete the object files manually (cd objs, rm -rf Linux)