From 2ba767f658caef16503023348460b78e8ec595ce Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Fri, 2 Nov 2018 21:47:02 -0500 Subject: [PATCH 1/2] QBXExpansionWrangler: Fix early-exit return values to conform to timing interface When there are no used QBX centers, the Sumpy wrangler returns early, but it wasn't returning a TimingResult as it should have --- pytential/qbx/fmm.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/pytential/qbx/fmm.py b/pytential/qbx/fmm.py index 46d7ae88..0058d87e 100644 --- a/pytential/qbx/fmm.py +++ b/pytential/qbx/fmm.py @@ -198,10 +198,11 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), @log_process(logger) def form_global_qbx_locals(self, src_weights): local_exps = self.qbx_local_expansion_zeros() + events = [] geo_data = self.geo_data if len(geo_data.global_qbx_centers()) == 0: - return local_exps + return (local_exps, SumpyTimingFuture(self.queue, events)) traversal = geo_data.traversal() @@ -227,25 +228,27 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), **kwargs) + events.append(evt) + assert local_exps is result result.add_event(evt) - return (result, SumpyTimingFuture(self.queue, [evt])) + return (result, SumpyTimingFuture(self.queue, events)) @log_process(logger) def translate_box_multipoles_to_qbx_local(self, multipole_exps): qbx_expansions = self.qbx_local_expansion_zeros() + events = [] + geo_data = self.geo_data if geo_data.ncenters == 0: - return qbx_expansions + return (qbx_expansions, SumpyTimingFuture(self.queue, events)) traversal = geo_data.traversal() wait_for = multipole_exps.events - events = [] - for isrc_level, ssn in enumerate(traversal.from_sep_smaller_by_level): m2qbxl = self.code.m2qbxl( self.level_orders[isrc_level], @@ -290,14 +293,14 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), qbx_expansions = self.qbx_local_expansion_zeros() geo_data = self.geo_data + events = [] if geo_data.ncenters == 0: - return qbx_expansions + return (qbx_expansions, SumpyTimingFuture(self.queue, events)) + trav = geo_data.traversal() wait_for = local_exps.events - events = [] - for isrc_level in range(geo_data.tree().nlevels): l2qbxl = self.code.l2qbxl( self.level_orders[isrc_level], @@ -339,8 +342,10 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), pot = self.full_output_zeros() geo_data = self.geo_data + events = [] + if len(geo_data.global_qbx_centers()) == 0: - return pot + return (pot, SumpyTimingFuture(self.queue, events)) ctt = geo_data.center_to_tree_targets() @@ -365,7 +370,7 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), for pot_i, pot_res_i in zip(pot, pot_res): assert pot_i is pot_res_i - return (pot, SumpyTimingFuture(self.queue, [evt])) + return (pot, SumpyTimingFuture(self.queue, events)) # }}} -- GitLab From c84cf97072c3ed39b257b50e3325f9e9699ab4a5 Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Fri, 2 Nov 2018 21:51:07 -0500 Subject: [PATCH 2/2] Whitespace consistency --- pytential/qbx/fmm.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pytential/qbx/fmm.py b/pytential/qbx/fmm.py index 0058d87e..badf6300 100644 --- a/pytential/qbx/fmm.py +++ b/pytential/qbx/fmm.py @@ -229,7 +229,6 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), **kwargs) events.append(evt) - assert local_exps is result result.add_event(evt) @@ -238,7 +237,6 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), @log_process(logger) def translate_box_multipoles_to_qbx_local(self, multipole_exps): qbx_expansions = self.qbx_local_expansion_zeros() - events = [] geo_data = self.geo_data @@ -280,7 +278,6 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), **self.kernel_extra_kwargs) events.append(evt) - wait_for = [evt] assert qbx_expansions_res is qbx_expansions @@ -294,6 +291,7 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), geo_data = self.geo_data events = [] + if geo_data.ncenters == 0: return (qbx_expansions, SumpyTimingFuture(self.queue, events)) @@ -329,7 +327,6 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), **self.kernel_extra_kwargs) events.append(evt) - wait_for = [evt] assert qbx_expansions_res is qbx_expansions -- GitLab