mailRe: r3237 - in /branches/multi_processor: multi/mpi4py_processor.py relax


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Gary S. Thompson on March 19, 2007 - 16:29:
garyt@xxxxxxxxxxxxxxx wrote:

Dear Ed
d this is a good enough point to tell you how to run things and what to install for the mpi version i am testing with


I have installed mpipy and lam

lam should  be available in your linux distribution ??? ;-)

mpi4py came from http://www.python.org/pypi/mpi4py (there is an mpi4py website but it is out of date, however, mpi4py is under recent development)

follow the instructions to install mpi4py

create the file  'test_multi1.py'

-------------------8<-----------------------
import multi
cmd  =  multi.mpi4py_processor.Get_name_command()
self.relax.processor.run_command(cmd)
-------------------8<-----------------------

then type lamboot

and to run the test type:

mpirun -np 6 python relax --multi mpi4py test_mult1.py

to get:

                                 relax repository checkout

                         Protein dynamics by NMR relaxation data analysis

                            Copyright (C) 2001-2006 Edward d'Auvergne

This is free software which you are welcome to modify and redistribute under the conditions of the
GNU General Public License (GPL). This program, including all modules, is licensed under the GPL
and comes with absolutely no warranty. For details type 'GPL'. Assistance in using this program
can be accessed by typing 'help'.


script = 'test_mult1.py'
----------------------------------------------------------------------------------------------------
import sys


import multi cmd = multi.mpi4py_processor.Get_name_command() self.relax.processor.run_command(cmd) ---------------------------------------------------------------------------------------------------- 1 fbsdpcu156-9377 2 fbsdpcu156-9378 3 fbsdpcu156-9379 4 fbsdpcu156-9380 5 fbsdpcu156-9381



hope this is useful!

Now a question what is the best way to get an etrenally running relax interpreter I can just fire commands at (for the slaves)?

basically I just need to

1. do some setup
2. send a command object

but without quitting at the end of the script


do i modify interpreter.run to take a quit varaiable set to False so that run_script can be
run with quit = false?





regards gary


Author: varioustoxins
Date: Mon Mar 19 16:13:15 2007
New Revision: 3237

URL: http://svn.gna.org/viewcvs/relax?rev=3237&view=rev
Log:
implimentation of basic command structure and simplistic processor name command


Modified:
   branches/multi_processor/multi/mpi4py_processor.py
   branches/multi_processor/relax

Modified: branches/multi_processor/multi/mpi4py_processor.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/multi_processor/multi/mpi4py_processor.py?rev=3237&r1=3236&r2=3237&view=diff
==============================================================================
--- branches/multi_processor/multi/mpi4py_processor.py (original)
+++ branches/multi_processor/multi/mpi4py_processor.py Mon Mar 19 16:13:15 
2007
@@ -1,7 +1,7 @@
#!/usr/bin/env python

import sys
-
+import os


# load mpi @@ -23,14 +23,22 @@

def exit_mpi():
    if MPI.Is_initialized() and not MPI.Is_finalized() and MPI.rank == 0:
-        sendbuf  = ['close']
+        sendbuf = Exit_command()
        for i in range(MPI.size):
            if i != 0:
                MPI.COMM_WORLD.Send(buf=sendbuf,dest=i)

+#FIXME do some inheritance
+class Exit_command(object):
+    def run(self,processor):
+        processor.do_quit=True

+class Get_name_command(object):
+    def run(self,processor):
+        result = '%s-%s' % (MPI.Get_processor_name(),os.getpid())
+        MPI.COMM_WORLD.Send(buf=result, dest=0)

-
+#FIXME do some inheritance
class Mpi4py_processor:


@@ -41,6 +49,35 @@ # wrap sys.exit to close down mpi before exiting sys.exit= exit self.do_quit=False + + def exit(self): + exit_mpi() + + def run_command(self,command): + for i in range(1,MPI.size): + if i != 0: + MPI.COMM_WORLD.Send(buf=command,dest=i) + for i in range(1,MPI.size): + buf=[] + if i !=0: + elem = MPI.COMM_WORLD.Recv(source=i) + if type(elem) == 'object': + elem.run(relax_instance) + else: + #FIXME can't cope with multiple lines + print i,elem + + +# for i in range(MPI.size): +# buf=[] +# if i !=0: +# print 'try',i +# MPI.COMM_WORLD.Recv(buf=buf, source=i) +# for i,elem in enumerate(buf): +# if elem.type!='object': +# print i,elem +# else: +# elem.run()

    def run(self):

@@ -53,10 +90,13 @@
            self.relax_instance.run()
            sys.exit()
        else:
-            data = MPI.COMM_WORLD.Recv(source=0)
-            if data=='close':
-                exit_mpi()
-                return
+            while not self.do_quit:
+                data = MPI.COMM_WORLD.Recv(source=0)
+                data.run(self)
+
+            #if data=='close':
+            #    exit_mpi()
+            #    return




Modified: branches/multi_processor/relax URL: http://svn.gna.org/viewcvs/relax/branches/multi_processor/relax?rev=3237&r1=3236&r2=3237&view=diff ============================================================================== --- branches/multi_processor/relax (original) +++ branches/multi_processor/relax Mon Mar 19 16:13:15 2007 @@ -561,7 +561,9 @@ clazz = getattr(modules[-1], class_name) else: raise RelaxError("can't load class %s from module %s" % (class_name,module_path)) + object = clazz(relax_instance) + relax_instance.processor = object return object

if __name__ == "__main__":


_______________________________________________ relax (http://nmr-relax.com)

This is the relax-commits mailing list
relax-commits@xxxxxxx

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits

.





--
-------------------------------------------------------------------
Dr Gary Thompson
Astbury Centre for Structural Molecular Biology,
University of Leeds, Astbury Building,
Leeds, LS2 9JT, West-Yorkshire, UK             Tel. +44-113-3433024
email: garyt@xxxxxxxxxxxxxxx                   Fax  +44-113-2331407
-------------------------------------------------------------------





Related Messages


Powered by MHonArc, Updated Tue Mar 20 10:40:36 2007