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

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Tue May 12 10:34:04 PDT 2009


Author: mturk
Date: Tue May 12 10:34:03 2009
New Revision: 1303
URL: http://yt.spacepope.org/changeset/1303

Log:
Changed __calculate_overlap to work on a per-level basis.  It now only does
each level individually.  Additionally, preload each level and then pop out for
IO speedups.



Modified:
   trunk/yt/lagos/BaseDataTypes.py

Modified: trunk/yt/lagos/BaseDataTypes.py
==============================================================================
--- trunk/yt/lagos/BaseDataTypes.py	(original)
+++ trunk/yt/lagos/BaseDataTypes.py	Tue May 12 10:34:03 2009
@@ -965,21 +965,20 @@
         self.hierarchy.grid.readDataFast = readDataPackedHandle
 
     #@time_execution
-    def __calculate_overlap(self):
+    def __calculate_overlap(self, level):
         s = self.source
-        mylog.info("Generating overlap masks")
+        mylog.info("Generating overlap masks for level %s", level)
         i = 0
         pbar = get_pbar("Reading and masking grids ", len(s._grids))
-        for level in range(self._max_level+1):
-            mylog.debug("Examining level %s", level)
-            grids = s.levelIndices[level]
-            RE = s.gridRightEdge[grids]
-            LE = s.gridLeftEdge[grids]
-            for grid in s._grids[grids]:
-                pbar.update(i)
-                self.__overlap_masks[grid.id] = \
-                    grid._generate_overlap_masks(self.axis, LE, RE)
-                i += 1
+        mylog.debug("Examining level %s", level)
+        grids = s.levelIndices[level]
+        RE = s.gridRightEdge[grids]
+        LE = s.gridLeftEdge[grids]
+        for grid in s._grids[grids]:
+            pbar.update(i)
+            self.__overlap_masks[grid.id] = \
+                grid._generate_overlap_masks(self.axis, LE, RE)
+            i += 1
         pbar.finish()
         mylog.info("Finished calculating overlap.")
 
@@ -1097,16 +1096,16 @@
         self._obtain_fields(fields, self._node_name)
         fields = [f for f in fields if f not in self.data]
         if len(fields) == 0: return
-        self.__calculate_overlap()
         coord_data = []
         field_data = []
         dxs = []
         # We do this here, but I am not convinced it should be done here
         # It is probably faster, as it consolidates IO, but if we did it in
         # _project_level, then it would be more memory conservative
-        #self._preload(self.source._grids, self._get_dependencies(fields),
-        #              self.hierarchy.queue)
         for level in range(0, self._max_level+1):
+            self._preload(self.source._grids[self.source.levelIndices[level]],
+                          self._get_dependencies(fields), self.hierarchy.queue)
+            self.__calculate_overlap(level)
             my_coords, my_dx, my_fields = self.__project_level(level, fields)
             coord_data.append(my_coords)
             field_data.append(my_fields)



More information about the yt-svn mailing list