[yt-svn] commit/yt: MatthewTurk: Merged in MatthewTurk/yt/yt-3.0 (pull request #945)
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Wed Jun 11 14:33:53 PDT 2014
1 new commit in yt:
https://bitbucket.org/yt_analysis/yt/commits/af18fce402d7/
Changeset: af18fce402d7
Branch: yt-3.0
User: MatthewTurk
Date: 2014-06-11 23:33:44
Summary: Merged in MatthewTurk/yt/yt-3.0 (pull request #945)
Reduce memory usage for particle octrees
Affected #: 4 files
diff -r 122c45b92abbc439fa04107c58079932a19462d4 -r af18fce402d7e68f3620b4a0d6b322b50815f573 yt/data_objects/data_containers.py
--- a/yt/data_objects/data_containers.py
+++ b/yt/data_objects/data_containers.py
@@ -599,6 +599,10 @@
return
elif self._locked == True:
raise GenerationInProgress(fields)
+ # Track which ones we want in the end
+ ofields = set(self.field_data.keys()
+ + fields_to_get
+ + fields_to_generate)
# At this point, we want to figure out *all* our dependencies.
fields_to_get = self._identify_dependencies(fields_to_get,
self._spatial)
@@ -627,6 +631,9 @@
fields_to_generate += gen_fluids + gen_particles
self._generate_fields(fields_to_generate)
+ for field in self.field_data.keys():
+ if field not in ofields:
+ self.field_data.pop(field)
def _generate_fields(self, fields_to_generate):
index = 0
diff -r 122c45b92abbc439fa04107c58079932a19462d4 -r af18fce402d7e68f3620b4a0d6b322b50815f573 yt/data_objects/octree_subset.py
--- a/yt/data_objects/octree_subset.py
+++ b/yt/data_objects/octree_subset.py
@@ -52,12 +52,6 @@
_type_name = 'octree_subset'
_skip_add = True
_con_args = ('base_region', 'domain', 'pf')
- _container_fields = (("index", "dx"),
- ("index", "dy"),
- ("index", "dz"),
- ("index", "x"),
- ("index", "y"),
- ("index", "z"))
_domain_offset = 0
_cell_count = -1
@@ -78,19 +72,6 @@
self.base_region = base_region
self.base_selector = base_region.selector
- def _generate_container_field(self, field):
- if self._current_chunk is None:
- self.index._identify_base_chunk(self)
- if isinstance(field, tuple): field = field[1]
- if field == "dx":
- return self._current_chunk.fwidth[:,0]
- elif field == "dy":
- return self._current_chunk.fwidth[:,1]
- elif field == "dz":
- return self._current_chunk.fwidth[:,2]
- else:
- raise RuntimeError
-
def __getitem__(self, key):
tr = super(OctreeSubset, self).__getitem__(key)
try:
@@ -111,16 +92,20 @@
return self._num_zones + 2*self._num_ghost_zones
def _reshape_vals(self, arr):
- if len(arr.shape) == 4: return arr
+ if len(arr.shape) == 4 and arr.flags["F_CONTIGUOUS"]:
+ return arr
nz = self.nz
n_oct = arr.shape[0] / (nz**3.0)
if arr.size == nz*nz*nz*n_oct:
- arr = arr.reshape((nz, nz, nz, n_oct), order="F")
+ new_shape = (nz, nz, nz, n_oct)
elif arr.size == nz*nz*nz*n_oct * 3:
- arr = arr.reshape((nz, nz, nz, n_oct, 3), order="F")
+ new_shape = (nz, nz, nz, n_oct, 3)
else:
raise RuntimeError
- arr = np.asfortranarray(arr)
+ # This will retain units now.
+ arr.shape = new_shape
+ if not arr.flags["F_CONTIGUOUS"]:
+ arr = arr.reshape(new_shape, order="F")
return arr
_domain_ind = None
diff -r 122c45b92abbc439fa04107c58079932a19462d4 -r af18fce402d7e68f3620b4a0d6b322b50815f573 yt/geometry/coordinate_handler.py
--- a/yt/geometry/coordinate_handler.py
+++ b/yt/geometry/coordinate_handler.py
@@ -34,10 +34,10 @@
def _get_coord_fields(axi, units = "code_length"):
def _dds(field, data):
- rv = data.pf.arr(data.fwidth[...,axi], units)
+ rv = data.pf.arr(data.fwidth[...,axi].copy(), units)
return data._reshape_vals(rv)
def _coords(field, data):
- rv = data.pf.arr(data.fcoords[...,axi], units)
+ rv = data.pf.arr(data.fcoords[...,axi].copy(), units)
return data._reshape_vals(rv)
return _dds, _coords
diff -r 122c45b92abbc439fa04107c58079932a19462d4 -r af18fce402d7e68f3620b4a0d6b322b50815f573 yt/geometry/particle_oct_container.pyx
--- a/yt/geometry/particle_oct_container.pyx
+++ b/yt/geometry/particle_oct_container.pyx
@@ -300,6 +300,7 @@
# Now we locate the particle
for i in range(3):
ind[i] = <int> ((pos[p, i] - self.left_edge[i])*self.idds[i])
+ ind[i] = iclip(ind[i], 0, self.dims[i])
mask[ind[0],ind[1],ind[2]] |= val
def identify_data_files(self, SelectorObject selector):
Repository URL: https://bitbucket.org/yt_analysis/yt/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the yt-svn
mailing list