diff --git a/src/pairs/code_gen/cgen.py b/src/pairs/code_gen/cgen.py index 2d2a2934af606a62d96de8a185925ff9a1cb6945..995532cdcc7794380c87f85baaacf5ccccf58665 100644 --- a/src/pairs/code_gen/cgen.py +++ b/src/pairs/code_gen/cgen.py @@ -1,6 +1,6 @@ from pairs.ir.assign import Assign from pairs.ir.atomic import AtomicAdd -from pairs.ir.arrays import Array, ArrayAccess, ArrayDecl, RegisterArray, ReallocArray +from pairs.ir.arrays import Array, ArrayAccess, DeclareStaticArray, RegisterArray, ReallocArray from pairs.ir.block import Block from pairs.ir.branches import Branch from pairs.ir.cast import Cast @@ -23,7 +23,7 @@ from pairs.ir.select import Select from pairs.ir.sizeof import Sizeof from pairs.ir.types import Types from pairs.ir.utils import Print -from pairs.ir.variables import Var, VarDecl, Deref +from pairs.ir.variables import Var, DeclareVariable, Deref from pairs.ir.vectors import Vector, VectorAccess, VectorOp, ZeroVector from pairs.sim.timestep import Timestep from pairs.code_gen.printer import Printer @@ -220,7 +220,7 @@ class CGen: self.print("}") def generate_statement(self, ast_node): - if isinstance(ast_node, ArrayDecl): + if isinstance(ast_node, DeclareStaticArray): t = ast_node.array.type() tkw = Types.c_keyword(t) size = self.generate_expression(ScalarOp.inline(ast_node.array.alloc_size())) @@ -688,7 +688,7 @@ class CGen: self.print(f"pairs->reallocArray({a.id()}, &{ptr}, {d_ptr_addr}, {size});") #self.print(f"pairs->reallocArray({a.id()}, (void **) &{ptr}, (void **) &d_{ptr}, {size});") - if isinstance(ast_node, VarDecl): + if isinstance(ast_node, DeclareVariable): tkw = Types.c_keyword(ast_node.var.type()) if ast_node.var.type() == Types.Vector: diff --git a/src/pairs/ir/arrays.py b/src/pairs/ir/arrays.py index 309f87605257d329d10cbc2bbc88349b170d725f..445fb96954bac8fce908327b75860b288a687538 100644 --- a/src/pairs/ir/arrays.py +++ b/src/pairs/ir/arrays.py @@ -203,7 +203,7 @@ class ArrayAccess(ASTTerm): return [self.array] + self.partial_indexes -class ArrayDecl(ASTNode): +class DeclareStaticArray(ASTNode): def __init__(self, sim, array): super().__init__(sim) self.array = array diff --git a/src/pairs/ir/variables.py b/src/pairs/ir/variables.py index b0ad8564fd405c3cac9c7e681f25b584d96819f8..d57e081b9caba040abc2b8f3a195bb681808fb9b 100644 --- a/src/pairs/ir/variables.py +++ b/src/pairs/ir/variables.py @@ -49,7 +49,7 @@ class Var(ASTTerm): self.device_flag = False if temp: - VarDecl(sim, self) + DeclareVariable(sim, self) def __str__(self): return f"Var<{self.var_name}>" @@ -80,7 +80,7 @@ class Var(ASTTerm): return self.var_bonded_arrays -class VarDecl(ASTNode): +class DeclareVariable(ASTNode): def __init__(self, sim, var): super().__init__(sim) self.var = var diff --git a/src/pairs/sim/arrays.py b/src/pairs/sim/arrays.py index cf846757fbb3e0b03f169b38188fb12df70f4ff7..d3fa32dcbc524b28e38e004e96baaa7fcf8bfb0c 100644 --- a/src/pairs/sim/arrays.py +++ b/src/pairs/sim/arrays.py @@ -2,11 +2,11 @@ from pairs.ir.block import pairs_inline from pairs.ir.contexts import Contexts from pairs.ir.device import ClearArrayFlag from pairs.ir.memory import Malloc -from pairs.ir.arrays import ArrayDecl, RegisterArray +from pairs.ir.arrays import DeclareStaticArray, RegisterArray from pairs.sim.lowerable import FinalLowerable -class ArraysDecl(FinalLowerable): +class DeclareArrays(FinalLowerable): def __init__(self, sim): super().__init__(sim) @@ -14,7 +14,7 @@ class ArraysDecl(FinalLowerable): def lower(self): for a in self.sim.arrays.all(): if a.is_static(): - ArrayDecl(self.sim, a) + DeclareStaticArray(self.sim, a) RegisterArray(self.sim, a, a.alloc_size()) diff --git a/src/pairs/sim/cell_lists.py b/src/pairs/sim/cell_lists.py index 142eae8249189224ae97d5d6e11d607c58095af9..8ddf259f4b856318062732d6687784e03991bb7f 100644 --- a/src/pairs/sim/cell_lists.py +++ b/src/pairs/sim/cell_lists.py @@ -35,7 +35,7 @@ class CellLists: self.particle_cell = self.sim.add_array('particle_cell', self.sim.particle_capacity, Types.Int32) -class CellListsStencilBuild(Lowerable): +class BuildCellListsStencil(Lowerable): def __init__(self, sim, cell_lists): super().__init__(sim) self.cell_lists = cell_lists @@ -56,10 +56,13 @@ class CellListsStencilBuild(Lowerable): ntotal_cells *= cl.dim_ncells[d] Assign(sim, cl.ncells, ntotal_cells + 1) + for _ in sim.nest_mode(): Assign(sim, cl.nstencil, 0) + for d in range(sim.ndims()): nneigh = cl.nneighbor_cells[d] + for d_idx in For(sim, -nneigh, nneigh + 1): index = (d_idx if index is None else index * cl.dim_ncells[d - 1] + d_idx) if d == sim.ndims() - 1: @@ -67,7 +70,7 @@ class CellListsStencilBuild(Lowerable): Assign(sim, cl.nstencil, cl.nstencil + 1) -class CellListsBuild(Lowerable): +class BuildCellLists(Lowerable): def __init__(self, sim, cell_lists): super().__init__(sim) self.cell_lists = cell_lists diff --git a/src/pairs/sim/features.py b/src/pairs/sim/features.py index 70f7d44bbb2c7be0fac8ff63f256cbd9c6219848..4de08fc8953f17a9166bb627c900c35dbaec507e 100644 --- a/src/pairs/sim/features.py +++ b/src/pairs/sim/features.py @@ -3,7 +3,7 @@ from pairs.ir.features import RegisterFeatureProperty from pairs.sim.lowerable import FinalLowerable -class FeaturePropertiesAlloc(FinalLowerable): +class AllocateFeatureProperties(FinalLowerable): def __init__(self, sim): self.sim = sim diff --git a/src/pairs/sim/neighbor_lists.py b/src/pairs/sim/neighbor_lists.py index f79a4d1a836a4579112acd7f436365220ed56d28..bd39529b3f28fe2d5cf4d0ad98f5c90d5c4ff750 100644 --- a/src/pairs/sim/neighbor_lists.py +++ b/src/pairs/sim/neighbor_lists.py @@ -16,7 +16,7 @@ class NeighborLists: self.numneighs = self.sim.add_array('numneighs', self.sim.particle_capacity, Types.Int32) -class NeighborListsBuild(Lowerable): +class BuildNeighborLists(Lowerable): def __init__(self, sim, neighbor_lists): super().__init__(sim) self.neighbor_lists = neighbor_lists diff --git a/src/pairs/sim/properties.py b/src/pairs/sim/properties.py index 2f89336976b433c0a14182321355a13910243a96..fed66cc130fc11d4d538f29060da55babf06778a 100644 --- a/src/pairs/sim/properties.py +++ b/src/pairs/sim/properties.py @@ -10,7 +10,7 @@ from functools import reduce import operator -class PropertiesAlloc(FinalLowerable): +class AllocateProperties(FinalLowerable): def __init__(self, sim, realloc=False): self.sim = sim self.realloc = realloc @@ -32,7 +32,7 @@ class PropertiesAlloc(FinalLowerable): RegisterProperty(self.sim, p, sizes) -class ContactPropertiesAlloc(FinalLowerable): +class AllocateContactProperties(FinalLowerable): def __init__(self, sim, realloc=False): self.sim = sim @@ -50,7 +50,7 @@ class ContactPropertiesAlloc(FinalLowerable): RegisterContactProperty(self.sim, p, sizes) -class PropertiesResetVolatile(Lowerable): +class ResetVolatileProperties(Lowerable): def __init__(self, sim): self.sim = sim diff --git a/src/pairs/sim/simulation.py b/src/pairs/sim/simulation.py index c2ab5251bd9b9280e205229d7792288ea5e8f98f..7b70de08e69896f9686d785c7405aca078c6f8b9 100644 --- a/src/pairs/sim/simulation.py +++ b/src/pairs/sim/simulation.py @@ -12,20 +12,20 @@ from pairs.ir.types import Types from pairs.ir.variables import Variables from pairs.graph.graphviz import ASTGraph from pairs.mapping.funcs import compute -from pairs.sim.arrays import ArraysDecl -from pairs.sim.cell_lists import CellLists, CellListsBuild, CellListsStencilBuild +from pairs.sim.arrays import DeclareArrays +from pairs.sim.cell_lists import CellLists, BuildCellLists, BuildCellListsStencil from pairs.sim.comm import Comm from pairs.sim.contact_history import ContactHistory, BuildContactHistory from pairs.sim.domain_partitioning import DimensionRanges -from pairs.sim.features import FeaturePropertiesAlloc +from pairs.sim.features import AllocateFeatureProperties from pairs.sim.grid import Grid2D, Grid3D from pairs.sim.lattice import ParticleLattice -from pairs.sim.neighbor_lists import NeighborLists, NeighborListsBuild +from pairs.sim.neighbor_lists import NeighborLists, BuildNeighborLists from pairs.sim.pbc import EnforcePBC -from pairs.sim.properties import ContactPropertiesAlloc, PropertiesAlloc, PropertiesResetVolatile +from pairs.sim.properties import AllocateProperties, AllocateContactProperties, ResetVolatileProperties from pairs.sim.read_from_file import ReadParticleData from pairs.sim.timestep import Timestep -from pairs.sim.variables import VariablesDecl +from pairs.sim.variables import DeclareVariables from pairs.sim.vtk import VTKWrite from pairs.transformations import Transformations @@ -270,8 +270,8 @@ class Simulation: timestep_procedures = [ (comm.exchange(), 20), (comm.borders(), comm.synchronize(), 20), - (CellListsBuild(self, self.cell_lists), 20), - (NeighborListsBuild(self, self.neighbor_lists), 20), + (BuildCellLists(self, self.cell_lists), 20), + (BuildNeighborLists(self, self.neighbor_lists), 20), ] if not self.contact_properties.empty(): @@ -279,7 +279,7 @@ class Simulation: timestep_procedures.append((BuildContactHistory(self, contact_history), 20)) timestep_procedures += [ - PropertiesResetVolatile(self), + ResetVolatileProperties(self), self.functions ] @@ -290,20 +290,20 @@ class Simulation: body = Block.from_list(self, [ self.setups, - CellListsStencilBuild(self, self.cell_lists), + BuildCellListsStencil(self, self.cell_lists), VTKWrite(self, self.vtk_file, 0), timestep.as_block() ]) - decls = Block.from_list(self, [ - VariablesDecl(self), - ArraysDecl(self), - PropertiesAlloc(self), - ContactPropertiesAlloc(self), - FeaturePropertiesAlloc(self) + inits = Block.from_list(self, [ + DeclareVariables(self), + DeclareArrays(self), + AllocateProperties(self), + AllocateContactProperties(self), + AllocateFeatureProperties(self) ]) - program = Module(self, name='main', block=Block.merge_blocks(decls, body)) + program = Module(self, name='main', block=Block.merge_blocks(inits, body)) # Apply transformations transformations = Transformations(program, self._target) diff --git a/src/pairs/sim/variables.py b/src/pairs/sim/variables.py index ee7802590b02b7963899e1c6da6a117fcbd9d9ff..7d4651cbffc1a4ee5fee68ad1985bddceccdd246 100644 --- a/src/pairs/sim/variables.py +++ b/src/pairs/sim/variables.py @@ -1,13 +1,13 @@ from pairs.ir.block import pairs_inline -from pairs.ir.variables import VarDecl +from pairs.ir.variables import DeclareVariable from pairs.sim.lowerable import FinalLowerable -class VariablesDecl(FinalLowerable): +class DeclareVariables(FinalLowerable): def __init__(self, sim): super().__init__(sim) @pairs_inline def lower(self): for v in self.sim.vars.all(): - VarDecl(self.sim, v) + DeclareVariable(self.sim, v)