From 83da5bc88ed2d465bc1a711ef36ab782cb127a2a Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 23 Aug 2016 14:34:32 -0500 Subject: [PATCH] Support boxtree's list 3 split --- sumpy/e2p.py | 2 +- sumpy/fmm.py | 28 ++++++++++++++-------------- sumpy/version.py | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/sumpy/e2p.py b/sumpy/e2p.py index 3705832b..70fdc6ee 100644 --- a/sumpy/e2p.py +++ b/sumpy/e2p.py @@ -250,7 +250,7 @@ class E2PFromCSR(E2PBase): """] + loopy_insns + [""" end """] + [""" - result[{resultidx}, itgt] = \ + result[{resultidx}, itgt] = result[{resultidx}, itgt] + \ kernel_scaling * simul_reduce(sum, isrc_box, result_{resultidx}_p) {{id_prefix=write_result}} """.format(resultidx=i) for i in range(len(result_names))] + [""" diff --git a/sumpy/fmm.py b/sumpy/fmm.py index a2f933d5..a3d73f55 100644 --- a/sumpy/fmm.py +++ b/sumpy/fmm.py @@ -379,40 +379,40 @@ class SumpyExpansionWrangler(object): def eval_multipoles(self, level_start_target_box_nrs, - target_boxes, source_box_starts, - source_box_lists, mpole_exps): + target_boxes, source_boxes_by_level, mpole_exps): pot = self.potential_zeros() kwargs = self.kernel_extra_kwargs.copy() kwargs.update(self.box_target_list_kwargs()) - events = [] - for lev in range(self.tree.nlevels): - start, stop = level_start_target_box_nrs[lev:lev+2] - if start == stop: + wait_for = mpole_exps.events + + for isrc_level, ssn in enumerate(source_boxes_by_level): + if len(target_boxes) == 0: continue - m2p = self.code.m2p(self.fmm_level_to_order(lev)) + m2p = self.code.m2p(self.fmm_level_to_order(isrc_level)) evt, pot_res = m2p( - self.level_queues[lev], + self.queue, expansions=mpole_exps, - target_boxes=target_boxes[start:stop], - source_box_starts=source_box_starts[start:stop+1], - source_box_lists=source_box_lists, + target_boxes=target_boxes, + source_box_starts=ssn.starts, + source_box_lists=ssn.lists, centers=self.tree.box_centers, result=pot, - wait_for=mpole_exps.events, + wait_for=wait_for, **kwargs) + wait_for = [evt] + for pot_i, pot_res_i in zip(pot, pot_res): assert pot_i is pot_res_i - events.append(evt) - evt = _enqueue_barrier(self.queue, wait_for=events) for pot_i in pot: + # Intentionally only adding the last event. pot_i.add_event(evt) return pot diff --git a/sumpy/version.py b/sumpy/version.py index a19f3dda..69d68be4 100644 --- a/sumpy/version.py +++ b/sumpy/version.py @@ -25,4 +25,4 @@ VERSION = (2016, 1) VERSION_STATUS = "beta1" VERSION_TEXT = ".".join(str(x) for x in VERSION) + VERSION_STATUS -KERNEL_VERSION = 8 +KERNEL_VERSION = 9 -- GitLab