Making DESMOND easier to run on a cluster

So, some of you probably wanted to try out this DESMOND code from DESRES. It's shipped with the Maestro suite by Schrodinger, which is free for academics and a little annoying to use if you wanna *just* use the binary.

This tutorial essentially describes how to run DESMOND without any of the annoying wrappers shipped by Schrodinger. It's making the code possible to run in a sane fashion – similar to how you launch your any other MD codes on the cluster. We'll cover both the CPU DESMOND and the GPU GDESMOND.

Required package can be downloaded from


The 'Desmond-' is just the source code and some sample systems - we won't be compiling that just gonna use the sample system to see if the code runs.

Install 'Desmond_Maestro_2016.3.tar' following their instructions.

Here is an example module file, to accompany the installion

Then the standard
Okay so this works but 'desmond' is not actually the desmond binary, it's some python wrapper that then calls another wrapper that then calls the desmond binary.

We wanna use the desmond binary directly without all the crap.

Let's start by understanding what the wrapper runs and what's the env it uses : edit $SCHRODINGER/desmond-v4.7/bin/Linux-x86_64/ and add some print statements
Then let's run desmond again to understand what's going on

Some output should appear that looks like this

Checkout dhfr.log file, it should contain a line like this (note also the lines printing all the ENV variables)

Cool so there is some magical 'orterun' that's acting as 'mpirun' and calling desmond. Easy, let's try to run that

Well that sucks, let's setup the environment a bit more carefully:

Still crap but better, final change to the env

Awesome, or at least "good enough for government work"...

All those hacky export statements we'll get clean-up later, let's punch through this thing first. It should now be possible to call the desmond directly

Sweet, this looks like it's working, let's try and run the example system directly.
Nope still not working, lastly let's add all the bits together

And voila!
Now that was not easy... next up how to cleanup the modules file to re-use this more systematically and gdesmond.

Cleanup and gdesmond

Let's cleanup all those ugly exports we've done into a nice module file

This now finally looks and works like a reasonable way to launch an MD code...

In the modules files, switch up the plugins directory to the gdesmond-specific
And now, time to edit the dhfr.cfg

Then run the gdesmond with
Considerably faster!
U-Series to replace PME
Lastly, we're going to pickup useries.cfg from the technical report supplementary information available on their website

At the bottom there is a link to 
supplemental information which contains a config for a "new" feature called U-series that's a replacement for PME in calculating long-range electrostatics. It results in 50% speedup for DHFR, as shown below


Popular posts from this blog

React.js – edit and delete comments in CommentBox

ROCS-like shape overlap in rdkit

Example slurm cluster on your laptop (multiple VMs via vagrant)