UDCECC  ChemE 

Turbomole 5.9

This page documents the steps that I needed to take in order to get Turbomole installed and running – both serially and in parallel – on the squidward and spongebob clusters.

First and foremost, parallel Turbomole is a real pain the the neck because if your queue system grants it 4 nodes, it automatically decides to use 5 – rather than having each MPI process capable of processing, Turbomole wants to start N worker processes from the parent process, which will then simply sit back and do nothing while the workers execute. To do this, their parallel-run scripts make their own machine file, consisting of all the contents of the machine file handed to it by GridEngine PLUS:

# Add a node for the master process
echo "`hostname`" >> $local_machfile

This completely screws-up any attempt to run the calculation across anything but the primary network interface – I have yet to get Turbomole to work, period, if I use Squidward’s DMA interconnect that uses node00XX-amso addresses on a private class-B subnet in preference to the 100-Mbit primary interfaces running on a separate private class-B subnet. I’d rather reserve the ability to modify the host list external to Turbomole, though, in the GridEngine parallel-environment start script. So I comment-out the line shown above (there are multiple occurances, all in the mpirun_scripts/ directory) and modify the machine file generation subroutine in the SGE start script thusly:

PeHostfile2MachineFile()
{
   firstTime=0
   cat $1 | while read line; do
      # echo $line
      host=`echo $line|cut -f1 -d" "|cut -f1 -d"."`
      nslots=`echo $line|cut -f2 -d" "`
      i=1
      while [ $i -le $nslots ]; do
         echo $host
         i=`expr $i + 1`
      done
      if [ $firstTime = 0 ]; then
        # Weirdo Turbomole wants to run N+1 tasks, one of which
        # doesn't do anything; so we just repeat one of the node
        # lines:
        echo $host
        firstTime=1
      fi
   done
}

By the way, on Linux you really can’t run with anything but their fake MPICH2 Python scripts. I’m pretty sure that’s the crux of my headaches trying to get Turbomole to run on the DMA interfaces. As it stands, those scripts assume that you want to use ssh as the signaling medium between nodes and the whole package really doesn’t respond to any attempt to externally set this to rsh instead (e.g. with environment variables, cli flags, etc). So I was forced to edit the mpirun_scripts/MPICH2/mpdboot and mpirun_scripts/MPICH2/mpdcleanup scripts to force

rshCmd = 'rsh'

by default. Without that fix, I would get errors complaining that an MPD instance wasn’t running on nodeXX, which didn’t exactly scream-out that ssh couldn’t connect :-\

You’ll also need to be sure that the compute nodes have the diffutils package installed, for the sake of the /usr/bin/cmp utility.

documentation/turbomole.txt · Last modified: 2007/04/26 10:59 by zeus
Back to top
Copyright © 2006-2007, College of Engineering, University of Delaware