diff options
Diffstat (limited to 'geometry.py')
-rw-r--r-- | geometry.py | 58 |
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) |