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

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Tue May 5 10:55:00 PDT 2009


Author: mturk
Date: Tue May  5 10:55:00 2009
New Revision: 1291
URL: http://yt.spacepope.org/changeset/1291

Log:
Added support for preloading of data in the DerivedQuantities, which should
reduce some IO bottlenecks for parallel DQ's.



Modified:
   trunk/yt/lagos/DerivedQuantities.py
   trunk/yt/lagos/FieldInfoContainer.py

Modified: trunk/yt/lagos/DerivedQuantities.py
==============================================================================
--- trunk/yt/lagos/DerivedQuantities.py	(original)
+++ trunk/yt/lagos/DerivedQuantities.py	Tue May  5 10:55:00 2009
@@ -58,6 +58,16 @@
 
     def __call__(self, *args, **kwargs):
         lazy_reader = kwargs.pop('lazy_reader', False)
+        preload = kwargs.pop('preload', False)
+        if preload:
+            if not lazy_reader: mylog.debug("Turning on lazy_reader because of preload")
+            lazy_reader = True
+            e = FieldDetector()
+            e.NumberOfParticles = 1
+            self.func(e, *args, **kwargs)
+            mylog.debug("Preloading %s", e.requested)
+            self._preload(self._get_grids(), e.requested,
+                          self._data_source.pf.h.queue)
         if lazy_reader and not self.force_unlazy:
             return self._call_func_lazy(args, kwargs)
         else:

Modified: trunk/yt/lagos/FieldInfoContainer.py
==============================================================================
--- trunk/yt/lagos/FieldInfoContainer.py	(original)
+++ trunk/yt/lagos/FieldInfoContainer.py	Tue May  5 10:55:00 2009
@@ -123,6 +123,7 @@
 class FieldDetector(defaultdict):
     Level = 1
     NumberOfParticles = 0
+    _read_exception = None
     def __init__(self, nd = 16, pf = None):
         self.nd = nd
         self.ActiveDimensions = [nd,nd,nd]
@@ -154,6 +155,11 @@
                 return self[item]
         self.requested.append(item)
         return defaultdict.__missing__(self, item)
+
+    def _read_data(self, field_name):
+        self.requested.append(field_name)
+        return defaultdict.__missing__(self, field_name)
+
     def get_field_parameter(self, param):
         self.requested_parameters.append(param)
         if param in ['bulk_velocity','center','height_vector']:



More information about the yt-svn mailing list