From e096aca2a38141ff0f3e78f3ebadd7a58760f7a6 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sat, 22 Jun 2019 19:59:36 +0200 Subject: Add interactive 2D LDC notebook, fix material initialization --- simulation.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'simulation.py') diff --git a/simulation.py b/simulation.py index 20b87c8..74c59ac 100644 --- a/simulation.py +++ b/simulation.py @@ -68,8 +68,6 @@ class Lattice: properties=[(cl.context_properties.PLATFORM, self.platform)]) self.queue = cl.CommandQueue(self.context) - self.np_material = numpy.ndarray(shape=(self.geometry.volume, 1), dtype=numpy.int32) - self.pop_size = descriptor.q * self.geometry.volume * self.float_type[0](0).nbytes self.moments_size = (descriptor.d+1) * self.geometry.volume * self.float_type[0](0).nbytes @@ -85,7 +83,7 @@ class Lattice: else: self.cl_moments = cl.Buffer(self.context, mf.WRITE_ONLY, size=self.moments_size) - self.cl_material = cl.Buffer(self.context, mf.READ_ONLY | mf.USE_HOST_PTR, hostbuf=self.np_material) + self.cl_material = cl.Buffer(self.context, mf.READ_ONLY, size=self.geometry.volume * numpy.int32(0).nbytes) self.build_kernel() @@ -105,10 +103,13 @@ class Lattice: return z * (self.geometry.size_x*self.geometry.size_y) + y * self.geometry.size_x + x; def setup_geometry(self, material_at): + material = numpy.ndarray(shape=(self.geometry.volume, 1), dtype=numpy.int32) + material[:,:] = 0 + for idx in self.geometry.inner_cells(): - self.np_material[self.gid(*idx)] = material_at(self.geometry, *idx) + material[self.gid(*idx)] = material_at(self.geometry, *idx) - cl.enqueue_copy(self.queue, self.cl_material, self.np_material).wait(); + cl.enqueue_copy(self.queue, self.cl_material, material).wait(); def build_kernel(self): program_src = Template(filename = str(Path(__file__).parent/'template/kernel.mako')).render( -- cgit v1.2.3