How to run parallel Dock6 on the Linux clusters
Step 1: Please read "how to setup your working environment" and do the following:
a. In your .bashrc file, include the sentence of "module load dock6/default" and "module load mpi/mpich2/default" in the module-loading section. You shall have something like this
# modules definitions
if [ -n "$MODULESHOME" ]; then
module use /shr/modules
module load mpi/mpich2/default
module load dock6/default
fi
Note: A non-parallel version of dock6 is also installed in /source/dock6/non-parallel/dock6. For test or study purpose, you can allocate one computing node (interactively) and work with this non-parallel version. To know how to allocate one computing node interactively, please refer to "How to run interactive job".
b. Type ". .bashrc" in your terminal, and then type "module list in your terminal again, you shall be able to see:
[testy@n137 ~]$ . .bashrc
[testy@n137 ~]$ module list
Currently Loaded Modulefiles:
1) mpi/mpich2/default 1) dock6/default
If you see the above output on terminal, it means your environment has been setup correctly.
c. To confirm your configuration is correct, type the following:
[testy@n137 ~] which mpiexec
/source/mpich2/bin/mpiexec
[testy@n137 ~] which dock6.mpi
/source/dock6/parallel/dock6/bin/dock6.mpi
Step 2: Copy /source/dock6/parallel/dock6/tutorial/ to your own working directory /shr/home/$USER/TestDock6/ , enter "mpi_demo2" folder, then follow the instructions in the 0README file to generate necessary input files. (particularly pay attention mpi.in input file ). When finish the preparation, go to the "4_dock" directory
Step 3: The following script mpidock.lsf is used to submit the mpi docking program into the cluster.
Note:
This script will:
1) Setups the job parameters, including allocation of processors
2) Pass the LSF scheduler information to the mpich2 and create mpich2 execution environment
3) Submit the dock6.mpi to the mpich2, runs the program.
4) Clean the job
Here is the mpidock6.lsf job script
#BSUB -L /bin/bash
# the name of your job on the queue system
#BSUB -J mpidock
# the queue that you will use, the example here use the queue called "normal"
# please use bqueus command to check the available queues
#BSUB -q normal
# the system output and error message output, %J will show as your jobID
#BSUB -o %J.out
#BSUB -e %J.err
#the number of processors that you will use, you can modify this number
#BSUB -n 10
#when job finish that you will get email notification
#BSUB -u testy@partners.org
#BSUB -N
############ enter your working directory, change to your own dir ###
work_dir="/shr/home/$USER/TestDock6/tutorials/mpi_demo2/4_dock/"
cd $work_dir
############ this section is to create mpd ring, DO NOT modify unless you understand #####
nproc=0
for proc in $LSB_HOSTS ; do
echo $proc >> mpd.procs
nproc=`expr $nproc + 1`
done
echo $LSB_HOSTS
echo $nproc
`sort -u mpd.procs > mpd.nodes`
nhosts=`less mpd.nodes | wc -l`
mpdboot -n $nhosts -v -f mpd.nodes
############ change the myexe to your own application and ncessary arguments #####
mpiexec -machinefile mpd.procs -np $nproc dock6.mpi -i mpi.in -o dock.out
############ exit the mpd ring and clean off the nodes ###################
mpdallexit
mpdcleanup
`rm mpd.nodes`
`rm mpd.procs`
Step 4: Submit the job
[testy@n137 ~]$ bsub < mpidock6.lsf
Job <497007> is submitted to queue .
[testy@n137 4_dock]$ bjobs -l
Job <497007>, Job Name , User , Project , Mail , Status , Queue , Command <#
BSUB -L /bin/bash; # the name of your job on the queue sys
tem;#BSUB -J mpich2_test; # the queue that you will use, t
he example here use the queue called "normal";# please use
bqueus command to check the available queues;#BSUB -q norm
al; # the system output and error message output, %J will
show as your jobID;#BSUB -o %J.out;#BSUB -e %J.err; #the n
umber of processors that you will use;#BSUB -n 10; #when j
ob finish that you will get email notification;#BSUB -u te
sty@partners.org;#BSU>
Wed Apr 8 20:00:45: Submitted from host , CWD <$HOME/TestDock6/tutorials
/mpi_demo/4_dock>, Output File <%J.out>, Error File <%J.er
r>, Notify when job ends, 10 Processors Requested, Login S
hell ;
PENDING REASONS:
The schedule of the job is postponed for a while;
SCHEDULING PARAMETERS:
r15s r1m r15m ut pg io ls it tmp swp mem
loadSched - - - - - - - - - - -
loadStop - - - - - - - - - - -
[jxu@n137 4_dock]$
When job finishes, you shall have something like the following output, the dock.out will contain all the results, and there are also list of individual output files generated by each processor.
[testy@n137 4_dock]$ ls -ltr
total 768
-rw-r----- 1 testy testy 734 Apr 6 14:51 0README
-rwxr-x--- 1 testy testy 982 Apr 6 14:51 script_demo
-rwxr-x--- 1 testy testy 49 Apr 6 14:51 script_clean
-rw-r----- 1 testy testy 4015 Apr 6 14:52 mpi.in
-rw-rw---- 1 testy testy 1219 Apr 8 20:00 mpidock.lsf
-rw-rw-r-- 1 testy testy 6381 Apr 8 20:01 dock.out.1
-rw-rw-r-- 1 testy testy 6382 Apr 8 20:01 dock.out.7
-rw-rw-r-- 1 testy testy 6382 Apr 8 20:01 dock.out.6
-rw-rw-r-- 1 testy testy 6382 Apr 8 20:01 dock.out.5
-rw-rw-r-- 1 testy testy 6382 Apr 8 20:01 dock.out.4
-rw-rw-r-- 1 testy testy 6382 Apr 8 20:01 dock.out.3
-rw-rw-r-- 1 testy testy 6382 Apr 8 20:01 dock.out.9
-rw-rw-r-- 1 testy testy 6382 Apr 8 20:01 dock.out.8
-rw-rw-r-- 1 testy testy 6479 Apr 8 20:01 dock.out.2
-rw-rw-r-- 1 testy testy 8478 Apr 8 20:01 dock.out
-rw-rw-r-- 1 testy testy 23819 Apr 8 20:01 1VRT_scored.mol2
-rw-rw---- 1 testy testy 548 Apr 8 20:01 497007.out
-rw-rw---- 1 testy testy 0 Apr 8 20:01 497007.err
|