Distributed CSA (Conformational Space Annealing) Command
1. The distributed CSA commands will be based on the recent
MSCALE commands in CHARMM. The MSCALE commands allow diverse components
of a single hamiltonian to be calculated on additional processors.
2. The CSA module will distribute a repetitive workload of many processors.
It will consist of a series of commands, some on the the master and
some on the slaves. Slaves can be setup as CHARMM scripts, or run
as other separate utility programs.
* Syntax / Suggested syntax
* Example / Sample CHARMM slave script
* Notes / Additional notes
Top
[Suggested syntax]
--------ON THE MASTER--------
MASTer - ! Use this processor as a master
[ NSUBsystems integer ] - ! How many slaves to generate
(typ. 50)
[ PROGram filename ] - ! What program to run the slaves
with (typ. CHARMM)
[ NPROC integer ] - ! How many processors each slave
will use (def. 1)
atom-selection - ! ?? Which atoms will participate
(def. all)
[ INPUt filename ] - ! Input script for each slave
[ OUTPut filename ] ! Output file from each slave
CSA - ! The Conformational Space Annealing command
[ ] - ! Details to be worked out and implemented
[ ] -
[ ]
ETRAjectory ! Compute the frame by frame energy of a trajectory file.
SYSDisplay ! Display the info about the whole setup
--------ON THE SLAVES--------
RECEive - ! Receive data and coordinates from the Master
[ IFDOne word ] - ! Where to go if exit condition is received
[ repeat(flags) ]
TRANsmit - ! Send back energies to the Master
[ COORdinates ] - ! Send back coordinates too
[ FORCes ] - ! Send back forces too
[ DATA ] ! ?? Send back other data
Top
Sample CHARMM Slave Script
...
(setup PSF and stuff)
...
LABEL LOOP
RECEIVE IFDONE NEXT flag1 flag2
IF @flag1 .eq. 1 THEN MINI SD 50 ...
MINI ABNR 200 ...
if @flag2 .eq. 1 THEN print energy unit 22
TRANSMIT COORDINATES
GOTO LOOP
LABEL NEXT
...
...
Top
Additional Notes
Slaves should send a semaphore when ready to receive.
Communication should be non-blocking in general. The master should
not assume that all slaves will take the same amount of time.
Details for the high level FORTRAN CALLS for master-slave
communication need to be worked out (a job for Milan).
Suggestion for development:
Develop the ETRAJ command first. This will have all of the basic
communication calls, and can be used as a base by the CSA developers.
The ETRAJ command may proves useful as a stand alone tool...
Check syntax above for possible conflicts with other developments