summaryrefslogtreecommitdiff
path: root/geometry.py
diff options
context:
space:
mode:
Diffstat (limited to 'geometry.py')
-rw-r--r--geometry.py58
1 files changed, 35 insertions, 23 deletions
diff --git a/geometry.py b/geometry.py
index 2405e07..f0f5c20 100644
--- a/geometry.py
+++ b/geometry.py
@@ -165,8 +165,8 @@ def morton_order(mesh, bits):
np.max(mesh[:,:,1]),
np.max(mesh[:,:,2])])
- if bits <= 0 or bits > 12:
- raise Exception('number of bits must be in the range (0,12].')
+ if bits <= 0 or bits > 10:
+ raise Exception('number of bits must be in the range (0,10].')
max_value = 2**bits - 1
@@ -403,31 +403,43 @@ class Geometry(object):
self.node_map_gpu = cuda.to_device(self.node_map)
self.node_length_gpu = cuda.to_device(self.node_length)
- print 'Device usage:'
- print 'vertices:', vertices.nbytes
- print 'triangles:', triangles.nbytes
- print 'lower_bounds:', lower_bounds.nbytes
- print 'upper_bounds:', upper_bounds.nbytes
- print 'node_map:', self.node_map.nbytes
- print 'node_length:', self.node_length.nbytes
+ def format_size(size):
+ if size < 1e3:
+ return '%.1f%s' % (size, ' ')
+ elif size < 1e6:
+ return '%.1f%s' % (size/1e3, 'K')
+ elif size < 1e9:
+ return '%.1f%s' % (size/1e6, 'M')
+ else:
+ return '%.1f%s' % (size/1e9, 'G')
+
+ def format_array(name, array):
+ return '%-15s %6s %6s' % (name, format_size(len(array)), format_size(array.nbytes))
+
+ print 'Device Usage:'
+ print format_array('vertices', vertices)
+ print format_array('triangles', triangles)
+ print format_array('lower_bounds', self.lower_bounds)
+ print format_array('upper_bounds', self.upper_bounds)
+ print format_array('node_map', self.node_map)
+ print format_array('node_length', self.node_length)
+ print '%-15s %6s %6s' % ('total', '', format_size(vertices.nbytes + triangles.nbytes + self.lower_bounds.nbytes + self.upper_bounds.nbytes + self.node_map.nbytes + self.node_length.nbytes))
set_pointer = module.get_function('set_pointer')
set_pointer(self.triangles_gpu, self.vertices_gpu,
block=(1,1,1), grid=(1,1))
- lower_bounds_tex = module.get_texref('lower_bounds')
- upper_bounds_tex = module.get_texref('upper_bounds')
- node_map_tex = module.get_texref('node_map')
- node_length_tex = module.get_texref('node_length')
+ self.lower_bounds_tex = module.get_texref('lower_bounds')
+ self.upper_bounds_tex = module.get_texref('upper_bounds')
+ self.node_map_tex = module.get_texref('node_map')
+ self.node_length_tex = module.get_texref('node_length')
- lower_bounds_tex.set_address(self.lower_bounds_gpu, lower_bounds.nbytes)
- upper_bounds_tex.set_address(self.upper_bounds_gpu, upper_bounds.nbytes)
- node_map_tex.set_address(self.node_map_gpu, self.node_map.nbytes)
- node_length_tex.set_address(self.node_length_gpu, self.node_length.nbytes)
+ self.lower_bounds_tex.set_address(self.lower_bounds_gpu, lower_bounds.nbytes)
+ self.upper_bounds_tex.set_address(self.upper_bounds_gpu, upper_bounds.nbytes)
+ self.node_map_tex.set_address(self.node_map_gpu, self.node_map.nbytes)
+ self.node_length_tex.set_address(self.node_length_gpu, self.node_length.nbytes)
- lower_bounds_tex.set_format(cuda.array_format.FLOAT, 4)
- upper_bounds_tex.set_format(cuda.array_format.FLOAT, 4)
- node_map_tex.set_format(cuda.array_format.UNSIGNED_INT32, 1)
- node_length_tex.set_format(cuda.array_format.UNSIGNED_INT32, 1)
-
- return [lower_bounds_tex, upper_bounds_tex, node_map_tex, node_length_tex]
+ self.lower_bounds_tex.set_format(cuda.array_format.FLOAT, 4)
+ self.upper_bounds_tex.set_format(cuda.array_format.FLOAT, 4)
+ self.node_map_tex.set_format(cuda.array_format.UNSIGNED_INT32, 1)
+ self.node_length_tex.set_format(cuda.array_format.UNSIGNED_INT32, 1)