[Yt-svn] yt-commit r945 - trunk/yt/lagos

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Tue Nov 18 00:05:22 PST 2008


Author: mturk
Date: Tue Nov 18 00:05:21 2008
New Revision: 945
URL: http://yt.spacepope.org/changeset/945

Log:
Some hacks for the InMemory stuff; the MPI calls will eventually be moved out
of HierarchyType into something else.



Modified:
   trunk/yt/lagos/HierarchyType.py

Modified: trunk/yt/lagos/HierarchyType.py
==============================================================================
--- trunk/yt/lagos/HierarchyType.py	(original)
+++ trunk/yt/lagos/HierarchyType.py	Tue Nov 18 00:05:21 2008
@@ -823,6 +823,9 @@
                     if grid.Parent: grid._guess_properties_from_parent()
                 if pbar: pbar.finish()
 
+    def _join_field_lists(self, field_list):
+        return field_list
+
     def _setup_field_lists(self):
         field_list = self.get_data("/", "DataFields")
         if field_list == None:
@@ -838,6 +841,7 @@
                     continue
                 mylog.debug("Grid %s has: %s", grid.id, gf)
                 field_list = field_list.union(sets.Set(gf))
+            field_list = self._join_field_lists(field_list)
             self.save_data(list(field_list),"/","DataFields")
         self.field_list = list(field_list)
         for field in self.field_list:
@@ -881,6 +885,19 @@
     def _initialize_data_file(self):
         pass
 
+    def _join_field_lists(self, field_list):
+        from mpi4py import MPI
+        MPI.COMM_WORLD.Barrier()
+        data = list(field_list)
+        if MPI.COMM_WORLD.rank == 0:
+            for i in range(1, MPI.COMM_WORLD.size):
+                data += MPI.COMM_WORLD.Recv(source=i, tag=0)
+            data = list(set(data))
+        else:
+            MPI.COMM_WORLD.Send(data, dest=0, tag=0)
+        MPI.COMM_WORLD.Barrier()
+        return MPI.COMM_WORLD.Bcast(data, root=0)
+
     def _populate_hierarchy(self):
         self._copy_hierarchy_structure()
         import enzo
@@ -900,6 +917,7 @@
         mylog.debug("Preparing grids")
         for i, grid in enumerate(self.grids):
             if (i%1e4) == 0: mylog.debug("Prepared % 7i / % 7i grids", i, self.num_grids)
+            grid.filename = None
             grid._prepare_grid()
             grid.proc_num = self.gridProcs[i,0]
         self._setup_grid_dxs()



More information about the yt-svn mailing list