mailr15610 - /1.3/multi/test_implementation2.py


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

Header


Content

Posted by edward on March 23, 2012 - 12:19:
Author: bugman
Date: Fri Mar 23 12:19:33 2012
New Revision: 15610

URL: http://svn.gna.org/viewcvs/relax?rev=15610&view=rev
Log:
The multi/test_implementation2.py script now properly uses pre-send data in 
the slave calculations.

The sending component is complete (though is still non-functional on the 
uni-processor).  However
the handling of data post-calculation still needs to be abstracted via the 
API.


Modified:
    1.3/multi/test_implementation2.py

Modified: 1.3/multi/test_implementation2.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/multi/test_implementation2.py?rev=15610&r1=15609&r2=15610&view=diff
==============================================================================
--- 1.3/multi/test_implementation2.py (original)
+++ 1.3/multi/test_implementation2.py Fri Mar 23 12:19:33 2012
@@ -124,9 +124,9 @@
         self.num = 0
 
         # The invariant data to pass to the slaves once.
-        real_length = 2.0
+        self.real_length = 2.0
         self.vect = array([1, 2, 3], float64)
-        self.vect = self.vect / norm(self.vect) * real_length
+        self.vect = self.vect / norm(self.vect) * self.real_length
 
 
     def run(self):
@@ -153,8 +153,13 @@
         # Execute the calculations, waiting for completion.
         processor_box.processor.run_queue()
 
+        # Calculate the average length.
+        ave_len = processor_box.processor.data_store.total_length / self.N
+
         # Final program print out.
         print("\n\nTotal number of calculations: %s" % self.num)
+        print("Real length: %s" % self.real_length)
+        print("Averaged vector length: %s" % ave_len)
 
 
     def sum_fn(self, num):
@@ -192,7 +197,7 @@
 class Test_result_command(Result_command):
     """The result command for processing the results from the slaves on the 
master."""
 
-    def __init__(self, processor, memo_id=None, num=None, completed=True):
+    def __init__(self, processor, memo_id=None, num=None, length=None, 
completed=True):
         """Store all the slave results for processing on the master.
 
         @param processor:   The slave processor object.
@@ -201,6 +206,8 @@
         @type memo_id:      int
         @keyword num:       The number of calculations performed by the 
slave.  This is an example of data transfer from the slave to master 
processor.
         @type num:          int
+        @keyword length:    The sum of vector lengths.
+        @type length:       float
         @keyword completed: A flag saying if the calculation on the slave 
processor completed correctly.
         @type completed:    bool
         """
@@ -211,6 +218,7 @@
         # Store the arguments.
         self.memo_id = memo_id
         self.num = num
+        self.length = length
 
 
     def run(self, processor, memo):
@@ -228,6 +236,13 @@
         # Calling a method on the master.
         memo.sum_fn(self.num)
 
+        # Initialise the total length variable if the other slaves have not 
created it.
+        if not hasattr(processor.data_store, 'total_length'):
+            processor.data_store.total_length = 0.0
+
+        # Sum the lengths.
+        processor.data_store.total_length += self.length
+
 
 
 class Test_slave_command(Slave_command):
@@ -245,6 +260,9 @@
 
         # Initialise the rotation matrix.
         self.R = zeros((3, 3), float64)
+
+        # Initialise some variables for the calculation.
+        self.length = 0.0
 
 
     def run(self, processor, completed=False):
@@ -262,9 +280,8 @@
             # Random rotation matrix.
             R_random_hypersphere(self.R)
 
-            continue
             # Rotate the vector.
-            new_vect = dot(self.R, self.vect)
+            new_vect = dot(self.R, processor.data_store.vect)
 
             # The length sum.
             self.length += norm(new_vect)
@@ -273,7 +290,7 @@
             num_calcs += 1
 
         # Process the results on the master.
-        processor.return_object(Test_result_command(processor, 
memo_id=self.memo_id, num=num_calcs))
+        processor.return_object(Test_result_command(processor, 
memo_id=self.memo_id, num=num_calcs, length=self.length))
 
 
 




Related Messages


Powered by MHonArc, Updated Fri Mar 23 12:40:02 2012