diff --git a/examples/lj.py b/examples/lj.py index 4085490949ce1c26ae9bd087617f1538ff7ec4a1..8f2414dedec1858460c1737182f2925a087d667b 100644 --- a/examples/lj.py +++ b/examples/lj.py @@ -36,6 +36,12 @@ rho = 0.8442 temp = 1.44 psim = pairs.simulation("lj", [pairs.point_mass()], timesteps=200, double_prec=True) + +if target == 'gpu': + psim.target(pairs.target_gpu()) +else: + psim.target(pairs.target_cpu()) + psim.add_position('position') psim.add_property('mass', pairs.real(), 1.0) psim.add_property('linear_velocity', pairs.vector()) @@ -52,10 +58,4 @@ psim.compute_thermo(100) psim.compute(initial_integrate, symbols={'dt': dt}, pre_step=True, skip_first=True) psim.compute(lj, cutoff_radius) psim.compute(final_integrate, symbols={'dt': dt}, skip_first=True) - -if target == 'gpu': - psim.target(pairs.target_gpu()) -else: - psim.target(pairs.target_cpu()) - psim.generate() diff --git a/src/pairs/sim/comm.py b/src/pairs/sim/comm.py index e6fc4f661c906f9db55af61aa2885a841ebcce69..242c887531792b81385762f94a0421563aaa7ce1 100644 --- a/src/pairs/sim/comm.py +++ b/src/pairs/sim/comm.py @@ -20,8 +20,8 @@ class Comm: self.sim = sim self.dom_part = dom_part self.nsend_all = sim.add_var('nsend_all', Types.Int32) - self.send_capacity = sim.add_var('send_capacity', Types.Int32, 200000) - self.recv_capacity = sim.add_var('recv_capacity', Types.Int32, 200000) + self.send_capacity = sim.add_var('send_capacity', Types.Int32, 80000) + self.recv_capacity = sim.add_var('recv_capacity', Types.Int32, 80000) self.elem_capacity = sim.add_var('elem_capacity', Types.Int32, 40) self.neigh_capacity = sim.add_var('neigh_capacity', Types.Int32, 10) self.nsend = sim.add_array('nsend', [self.neigh_capacity], Types.Int32) diff --git a/src/pairs/sim/neighbor_lists.py b/src/pairs/sim/neighbor_lists.py index 2b10a66bd81e05c8fb6d224dfe5766085025d83a..5662522b2c2d178319b6aea8f0ad12d92d0960f9 100644 --- a/src/pairs/sim/neighbor_lists.py +++ b/src/pairs/sim/neighbor_lists.py @@ -1,6 +1,7 @@ from pairs.ir.assign import Assign from pairs.ir.block import pairs_device_block from pairs.ir.branches import Branch, Filter +from pairs.ir.layouts import Layouts from pairs.ir.loops import ParticleFor from pairs.ir.types import Types from pairs.ir.utils import Print @@ -9,10 +10,11 @@ from pairs.sim.lowerable import Lowerable class NeighborLists: - def __init__(self, cell_lists): - self.sim = cell_lists.sim + def __init__(self, sim, cell_lists): + neighbor_layout = Layouts.SoA if sim._target.is_gpu() else Layouts.AoS + self.sim = sim self.cell_lists = cell_lists - self.neighborlists = self.sim.add_array('neighborlists', [self.sim.particle_capacity, self.sim.neighbor_capacity], Types.Int32) + self.neighborlists = self.sim.add_array('neighborlists', [self.sim.particle_capacity, self.sim.neighbor_capacity], Types.Int32, neighbor_layout) self.numneighs = self.sim.add_array('numneighs', [self.sim.particle_capacity, self.sim.max_shapes()], Types.Int32)