From c7327a9d4e2b4ab0367439009724efef4e8558d4 Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Fri, 6 Jul 2018 18:18:11 -0500 Subject: [PATCH 1/5] Adapt FMM interface for timing data collection changes --- pytential/qbx/fmm.py | 76 ++++++++++++++++++++++++++++++++--------- pytential/qbx/fmmlib.py | 5 +++ requirements.txt | 4 +-- setup.py | 2 +- 4 files changed, 67 insertions(+), 20 deletions(-) diff --git a/pytential/qbx/fmm.py b/pytential/qbx/fmm.py index 4be9e5ca..4d131d7f 100644 --- a/pytential/qbx/fmm.py +++ b/pytential/qbx/fmm.py @@ -33,6 +33,7 @@ from sumpy.fmm import (SumpyExpansionWranglerCodeContainer, from pytools import memoize_method from pytential.qbx.interactions import P2QBXLFromCSR, M2QBXL, L2QBXL, QBXL2P +from boxtree.fmm import TimingRecorder from pytools import log_process, ProcessLogger import logging @@ -195,7 +196,7 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), # {{{ qbx-related @log_process(logger) - def form_global_qbx_locals(self, src_weights): + def form_global_qbx_locals(self, src_weights, timing_data=None): local_exps = self.qbx_local_expansion_zeros() geo_data = self.geo_data @@ -229,10 +230,13 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), assert local_exps is result result.add_event(evt) + self.update_timing_data("form_global_qbx_locals", timing_data, [evt]) + return result @log_process(logger) - def translate_box_multipoles_to_qbx_local(self, multipole_exps): + def translate_box_multipoles_to_qbx_local(self, multipole_exps, + timing_data=None): qbx_expansions = self.qbx_local_expansion_zeros() geo_data = self.geo_data @@ -241,6 +245,8 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), traversal = geo_data.traversal() + events = [] + wait_for = multipole_exps.events for isrc_level, ssn in enumerate(traversal.from_sep_smaller_by_level): @@ -273,15 +279,21 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), **self.kernel_extra_kwargs) + events.append(evt) + wait_for = [evt] assert qbx_expansions_res is qbx_expansions qbx_expansions.add_event(evt) + self.update_timing_data( + "translate_box_multipoles_to_qbx_local", + timing_data, events) + return qbx_expansions @log_process(logger) - def translate_box_local_to_qbx_local(self, local_exps): + def translate_box_local_to_qbx_local(self, local_exps, timing_data=None): qbx_expansions = self.qbx_local_expansion_zeros() geo_data = self.geo_data @@ -290,6 +302,7 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), trav = geo_data.traversal() wait_for = local_exps.events + events = [] for isrc_level in range(geo_data.tree().nlevels): l2qbxl = self.code.l2qbxl( @@ -318,15 +331,21 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), **self.kernel_extra_kwargs) + events.append(evt) + wait_for = [evt] assert qbx_expansions_res is qbx_expansions qbx_expansions.add_event(evt) + self.update_timing_data( + "translate_box_local_to_qbx_local", + timing_data, events) + return qbx_expansions @log_process(logger) - def eval_qbx_expansions(self, qbx_expansions): + def eval_qbx_expansions(self, qbx_expansions, timing_data=None): pot = self.full_output_zeros() geo_data = self.geo_data @@ -356,6 +375,8 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), for pot_i, pot_res_i in zip(pot, pot_res): assert pot_i is pot_res_i + self.update_timing_data("eval_qbx_expansions", timing_data, [evt]) + return pot # }}} @@ -365,7 +386,7 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), # {{{ FMM top-level -def drive_fmm(expansion_wrangler, src_weights): +def drive_fmm(expansion_wrangler, src_weights, timing_data=None): """Top-level driver routine for the QBX fast multipole calculation. :arg geo_data: A :class:`QBXFMMGeometryData` instance. @@ -373,6 +394,8 @@ def drive_fmm(expansion_wrangler, src_weights): :class:`ExpansionWranglerInterface`. :arg src_weights: Source 'density/weights/charges'. Passed unmodified to *expansion_wrangler*. + :arg timing_data: Either *None* or a dictionary that collects + timing data. Returns the potentials computed by *expansion_wrangler*. @@ -383,6 +406,7 @@ def drive_fmm(expansion_wrangler, src_weights): geo_data = wrangler.geo_data traversal = geo_data.traversal() tree = traversal.tree + recorder = TimingRecorder() # Interface guidelines: Attributes of the tree are assumed to be known # to the expansion wrangler and should not be passed. @@ -396,7 +420,8 @@ def drive_fmm(expansion_wrangler, src_weights): mpole_exps = wrangler.form_multipoles( traversal.level_start_source_box_nrs, traversal.source_boxes, - src_weights) + src_weights, + timing_data=recorder.next()) # }}} @@ -405,7 +430,8 @@ def drive_fmm(expansion_wrangler, src_weights): wrangler.coarsen_multipoles( traversal.level_start_source_parent_box_nrs, traversal.source_parent_boxes, - mpole_exps) + mpole_exps, + timing_data=recorder.next()) # }}} @@ -415,7 +441,8 @@ def drive_fmm(expansion_wrangler, src_weights): traversal.target_boxes, traversal.neighbor_source_boxes_starts, traversal.neighbor_source_boxes_lists, - src_weights) + src_weights, + timing_data=recorder.next()) # }}} @@ -426,7 +453,8 @@ def drive_fmm(expansion_wrangler, src_weights): traversal.target_or_target_parent_boxes, traversal.from_sep_siblings_starts, traversal.from_sep_siblings_lists, - mpole_exps) + mpole_exps, + timing_data=recorder.next()) # }}} @@ -438,7 +466,8 @@ def drive_fmm(expansion_wrangler, src_weights): non_qbx_potentials = non_qbx_potentials + wrangler.eval_multipoles( traversal.target_boxes_sep_smaller_by_source_level, traversal.from_sep_smaller_by_level, - mpole_exps) + mpole_exps, + timing_data=recorder.next()) # assert that list 3 close has been merged into list 1 assert traversal.from_sep_close_smaller_starts is None @@ -452,7 +481,8 @@ def drive_fmm(expansion_wrangler, src_weights): traversal.target_or_target_parent_boxes, traversal.from_sep_bigger_starts, traversal.from_sep_bigger_lists, - src_weights) + src_weights, + timing_data=recorder.next()) # assert that list 4 close has been merged into list 1 assert traversal.from_sep_close_bigger_starts is None @@ -464,7 +494,8 @@ def drive_fmm(expansion_wrangler, src_weights): wrangler.refine_locals( traversal.level_start_target_or_target_parent_box_nrs, traversal.target_or_target_parent_boxes, - local_exps) + local_exps, + timing_data=recorder.next()) # }}} @@ -473,22 +504,30 @@ def drive_fmm(expansion_wrangler, src_weights): non_qbx_potentials = non_qbx_potentials + wrangler.eval_locals( traversal.level_start_target_box_nrs, traversal.target_boxes, - local_exps) + local_exps, + timing_data=recorder.next()) # }}} # {{{ wrangle qbx expansions - qbx_expansions = wrangler.form_global_qbx_locals(src_weights) + qbx_expansions = wrangler.form_global_qbx_locals( + src_weights, + timing_data=recorder.next()) qbx_expansions = qbx_expansions + \ - wrangler.translate_box_multipoles_to_qbx_local(mpole_exps) + wrangler.translate_box_multipoles_to_qbx_local( + mpole_exps, + timing_data=recorder.next()) qbx_expansions = qbx_expansions + \ - wrangler.translate_box_local_to_qbx_local(local_exps) + wrangler.translate_box_local_to_qbx_local( + local_exps, + timing_data=recorder.next()) qbx_potentials = wrangler.eval_qbx_expansions( - qbx_expansions) + qbx_expansions, + timing_data=recorder.next()) # }}} @@ -516,6 +555,9 @@ def drive_fmm(expansion_wrangler, src_weights): fmm_proc.done() + if timing_data is not None: + timing_data.update(recorder.summarize()) + return result # }}} diff --git a/pytential/qbx/fmmlib.py b/pytential/qbx/fmmlib.py index 2b6cbf88..ec7d2b8a 100644 --- a/pytential/qbx/fmmlib.py +++ b/pytential/qbx/fmmlib.py @@ -30,6 +30,7 @@ from boxtree.pyfmmlib_integration import FMMLibExpansionWrangler from sumpy.kernel import LaplaceKernel, HelmholtzKernel +from boxtree.tools import record_time from pytools import log_process import logging @@ -301,6 +302,7 @@ class QBXFMMLibExpansionWrangler(FMMLibExpansionWrangler): # {{{ p2qbxl @log_process(logger) + @record_time("timing_data") def form_global_qbx_locals(self, src_weights): geo_data = self.geo_data trav = geo_data.traversal() @@ -352,6 +354,7 @@ class QBXFMMLibExpansionWrangler(FMMLibExpansionWrangler): # {{{ m2qbxl @log_process(logger) + @record_time("timing_data") def translate_box_multipoles_to_qbx_local(self, multipole_exps): qbx_exps = self.qbx_local_expansion_zeros() @@ -463,6 +466,7 @@ class QBXFMMLibExpansionWrangler(FMMLibExpansionWrangler): # }}} @log_process(logger) + @record_time("timing_data") def translate_box_local_to_qbx_local(self, local_exps): qbx_expansions = self.qbx_local_expansion_zeros() @@ -524,6 +528,7 @@ class QBXFMMLibExpansionWrangler(FMMLibExpansionWrangler): return qbx_expansions @log_process(logger) + @record_time("timing_data") def eval_qbx_expansions(self, qbx_expansions): output = self.full_output_zeros() diff --git a/requirements.txt b/requirements.txt index 6d1e4cce..192d0abf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ git+https://github.com/inducer/modepy git+https://github.com/inducer/pyopencl git+https://github.com/inducer/islpy git+https://github.com/inducer/loopy -git+https://gitlab.tiker.net/inducer/boxtree +git+https://gitlab.tiker.net/inducer/boxtree@timing-data git+https://github.com/inducer/meshmode -git+https://gitlab.tiker.net/inducer/sumpy +git+https://gitlab.tiker.net/inducer/sumpy@timing-data git+https://github.com/inducer/pyfmmlib diff --git a/setup.py b/setup.py index 84438494..f9ce7403 100644 --- a/setup.py +++ b/setup.py @@ -100,7 +100,7 @@ setup(name="pytential", "pytools>=2018.2", "modepy>=2013.3", "pyopencl>=2013.1", - "boxtree>=2013.1", + "boxtree>=2018.1", "pymbolic>=2013.2", "loo.py>=2017.2", "sumpy>=2013.1", -- GitLab From ec416c21186cc0835e47dadacdbeb7004698e05c Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Fri, 6 Jul 2018 18:21:14 -0500 Subject: [PATCH 2/5] Fix conda requirements.txt --- .test-conda-env-py3-requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.test-conda-env-py3-requirements.txt b/.test-conda-env-py3-requirements.txt index fa6c0426..cb126a56 100644 --- a/.test-conda-env-py3-requirements.txt +++ b/.test-conda-env-py3-requirements.txt @@ -1,5 +1,5 @@ -git+https://gitlab.tiker.net/inducer/boxtree +git+https://gitlab.tiker.net/inducer/boxtree@timing-data git+https://github.com/inducer/pymbolic git+https://github.com/inducer/loopy -git+https://gitlab.tiker.net/inducer/sumpy +git+https://gitlab.tiker.net/inducer/sumpy@timing-data git+https://github.com/inducer/meshmode -- GitLab From eb005a3b4df108765ebf47cde7f8f95aecf84853 Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Tue, 10 Jul 2018 01:03:10 -0500 Subject: [PATCH 3/5] WIP --- pytential/qbx/fmm.py | 127 +++++++++++++++++++++------------------- pytential/qbx/fmmlib.py | 10 ++-- 2 files changed, 72 insertions(+), 65 deletions(-) diff --git a/pytential/qbx/fmm.py b/pytential/qbx/fmm.py index 4d131d7f..0f4c5f31 100644 --- a/pytential/qbx/fmm.py +++ b/pytential/qbx/fmm.py @@ -28,7 +28,7 @@ import numpy as np # noqa import pyopencl as cl # noqa import pyopencl.array # noqa from sumpy.fmm import (SumpyExpansionWranglerCodeContainer, - SumpyExpansionWrangler, level_to_rscale) + SumpyExpansionWrangler, level_to_rscale, SumpyTimingFuture) from pytools import memoize_method from pytential.qbx.interactions import P2QBXLFromCSR, M2QBXL, L2QBXL, QBXL2P @@ -196,7 +196,7 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), # {{{ qbx-related @log_process(logger) - def form_global_qbx_locals(self, src_weights, timing_data=None): + def form_global_qbx_locals(self, src_weights): local_exps = self.qbx_local_expansion_zeros() geo_data = self.geo_data @@ -230,13 +230,10 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), assert local_exps is result result.add_event(evt) - self.update_timing_data("form_global_qbx_locals", timing_data, [evt]) - - return result + return (result, SumpyTimingFuture(self.queue, [evt])) @log_process(logger) - def translate_box_multipoles_to_qbx_local(self, multipole_exps, - timing_data=None): + def translate_box_multipoles_to_qbx_local(self, multipole_exps): qbx_expansions = self.qbx_local_expansion_zeros() geo_data = self.geo_data @@ -286,14 +283,10 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), qbx_expansions.add_event(evt) - self.update_timing_data( - "translate_box_multipoles_to_qbx_local", - timing_data, events) - - return qbx_expansions + return (qbx_expansions, SumpyTimingFuture(self.queue, events)) @log_process(logger) - def translate_box_local_to_qbx_local(self, local_exps, timing_data=None): + def translate_box_local_to_qbx_local(self, local_exps): qbx_expansions = self.qbx_local_expansion_zeros() geo_data = self.geo_data @@ -338,14 +331,10 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), qbx_expansions.add_event(evt) - self.update_timing_data( - "translate_box_local_to_qbx_local", - timing_data, events) - - return qbx_expansions + return (qbx_expansions, SumpyTimingFuture(self.queue, events)) @log_process(logger) - def eval_qbx_expansions(self, qbx_expansions, timing_data=None): + def eval_qbx_expansions(self, qbx_expansions): pot = self.full_output_zeros() geo_data = self.geo_data @@ -375,9 +364,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 - self.update_timing_data("eval_qbx_expansions", timing_data, [evt]) - - return pot + return (pot, SumpyTimingFuture(self.queue, [evt])) # }}} @@ -417,44 +404,48 @@ def drive_fmm(expansion_wrangler, src_weights, timing_data=None): # {{{ construct local multipoles - mpole_exps = wrangler.form_multipoles( + mpole_exps, timing_future = wrangler.form_multipoles( traversal.level_start_source_box_nrs, traversal.source_boxes, - src_weights, - timing_data=recorder.next()) + src_weights) + + recorder.add("form_multipoles", timing_future) # }}} # {{{ propagate multipoles upward - wrangler.coarsen_multipoles( + mpole_exps, timing_future = wrangler.coarsen_multipoles( traversal.level_start_source_parent_box_nrs, traversal.source_parent_boxes, - mpole_exps, - timing_data=recorder.next()) + mpole_exps) + + recorder.add("coarsen_multipoles", timing_future) # }}} # {{{ direct evaluation from neighbor source boxes ("list 1") - non_qbx_potentials = wrangler.eval_direct( + non_qbx_potentials, timing_future = wrangler.eval_direct( traversal.target_boxes, traversal.neighbor_source_boxes_starts, traversal.neighbor_source_boxes_lists, - src_weights, - timing_data=recorder.next()) + src_weights) + + recorder.add("eval_direct", timing_future) # }}} # {{{ translate separated siblings' ("list 2") mpoles to local - local_exps = wrangler.multipole_to_local( + local_exps, timing_future = wrangler.multipole_to_local( traversal.level_start_target_or_target_parent_box_nrs, traversal.target_or_target_parent_boxes, traversal.from_sep_siblings_starts, traversal.from_sep_siblings_lists, - mpole_exps, - timing_data=recorder.next()) + mpole_exps) + + recorder.add("multipole_to_local", timing_future) # }}} @@ -463,11 +454,14 @@ def drive_fmm(expansion_wrangler, src_weights, timing_data=None): # (the point of aiming this stage at particles is specifically to keep its # contribution *out* of the downward-propagating local expansions) - non_qbx_potentials = non_qbx_potentials + wrangler.eval_multipoles( + mpole_result, timing_future = wrangler.eval_multipoles( traversal.target_boxes_sep_smaller_by_source_level, traversal.from_sep_smaller_by_level, - mpole_exps, - timing_data=recorder.next()) + mpole_exps) + + recorder.add("eval_multipoles", timing_future) + + non_qbx_potentials = non_qbx_potentials + mpole_result # assert that list 3 close has been merged into list 1 assert traversal.from_sep_close_smaller_starts is None @@ -476,13 +470,16 @@ def drive_fmm(expansion_wrangler, src_weights, timing_data=None): # {{{ form locals for separated bigger source boxes ("list 4") - local_exps = local_exps + wrangler.form_locals( + local_result, timing_future = wrangler.form_locals( traversal.level_start_target_or_target_parent_box_nrs, traversal.target_or_target_parent_boxes, traversal.from_sep_bigger_starts, traversal.from_sep_bigger_lists, - src_weights, - timing_data=recorder.next()) + src_weights) + + recorder.add("form_locals", timing_future) + + local_exps = local_exps + local_result # assert that list 4 close has been merged into list 1 assert traversal.from_sep_close_bigger_starts is None @@ -491,43 +488,53 @@ def drive_fmm(expansion_wrangler, src_weights, timing_data=None): # {{{ propagate local_exps downward - wrangler.refine_locals( + local_exps, timing_future = wrangler.refine_locals( traversal.level_start_target_or_target_parent_box_nrs, traversal.target_or_target_parent_boxes, - local_exps, - timing_data=recorder.next()) + local_exps) + + recorder.add("refine_locals", timing_future) # }}} # {{{ evaluate locals - non_qbx_potentials = non_qbx_potentials + wrangler.eval_locals( + local_result, timing_future = wrangler.eval_locals( traversal.level_start_target_box_nrs, traversal.target_boxes, - local_exps, - timing_data=recorder.next()) + local_exps) + + recorder.add("eval_locals", timing_future) + + non_qbx_potentials = non_qbx_potentials + local_result # }}} # {{{ wrangle qbx expansions - qbx_expansions = wrangler.form_global_qbx_locals( - src_weights, - timing_data=recorder.next()) + qbx_expansions, timing_future = wrangler.form_global_qbx_locals( + src_weights) + + recorder.add("form_global_qbx_locals", timing_future) + + local_result, timing_future = ( + wrangler.translate_box_multipoles_to_qbx_local(mpole_exps)) + + recorder.add("translate_box_multipoles_to_qbx_local", timing_future) + + qbx_expansions = qbx_expansions + local_result + + local_result, timing_future = ( + wrangler.translate_box_local_to_qbx_local(mpole_exps)) + + recorder.add("translate_box_local_to_qbx_local", timing_future) - qbx_expansions = qbx_expansions + \ - wrangler.translate_box_multipoles_to_qbx_local( - mpole_exps, - timing_data=recorder.next()) + qbx_expansions = qbx_expansions + local_result - qbx_expansions = qbx_expansions + \ - wrangler.translate_box_local_to_qbx_local( - local_exps, - timing_data=recorder.next()) + qbx_potentials, timing_future = wrangler.eval_qbx_expansions( + qbx_expansions) - qbx_potentials = wrangler.eval_qbx_expansions( - qbx_expansions, - timing_data=recorder.next()) + recorder.add("eval_qbx_expansions", timing_future) # }}} diff --git a/pytential/qbx/fmmlib.py b/pytential/qbx/fmmlib.py index ec7d2b8a..dfd03b25 100644 --- a/pytential/qbx/fmmlib.py +++ b/pytential/qbx/fmmlib.py @@ -30,7 +30,7 @@ from boxtree.pyfmmlib_integration import FMMLibExpansionWrangler from sumpy.kernel import LaplaceKernel, HelmholtzKernel -from boxtree.tools import record_time +from boxtree.tools import return_timing_data from pytools import log_process import logging @@ -302,7 +302,7 @@ class QBXFMMLibExpansionWrangler(FMMLibExpansionWrangler): # {{{ p2qbxl @log_process(logger) - @record_time("timing_data") + @return_timing_data def form_global_qbx_locals(self, src_weights): geo_data = self.geo_data trav = geo_data.traversal() @@ -354,7 +354,7 @@ class QBXFMMLibExpansionWrangler(FMMLibExpansionWrangler): # {{{ m2qbxl @log_process(logger) - @record_time("timing_data") + @return_timing_data def translate_box_multipoles_to_qbx_local(self, multipole_exps): qbx_exps = self.qbx_local_expansion_zeros() @@ -466,7 +466,7 @@ class QBXFMMLibExpansionWrangler(FMMLibExpansionWrangler): # }}} @log_process(logger) - @record_time("timing_data") + @return_timing_data def translate_box_local_to_qbx_local(self, local_exps): qbx_expansions = self.qbx_local_expansion_zeros() @@ -528,7 +528,7 @@ class QBXFMMLibExpansionWrangler(FMMLibExpansionWrangler): return qbx_expansions @log_process(logger) - @record_time("timing_data") + @return_timing_data def eval_qbx_expansions(self, qbx_expansions): output = self.full_output_zeros() -- GitLab From 6d83ec980f39d488f4380bd3db7b7f385bfdd012 Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Tue, 10 Jul 2018 09:09:19 -0500 Subject: [PATCH 4/5] Update pytential for changes to boxtree timing API --- pytential/qbx/fmm.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/pytential/qbx/fmm.py b/pytential/qbx/fmm.py index 0f4c5f31..994c8ff7 100644 --- a/pytential/qbx/fmm.py +++ b/pytential/qbx/fmm.py @@ -242,10 +242,10 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), traversal = geo_data.traversal() - events = [] - 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], @@ -295,6 +295,7 @@ QBXFMMGeometryData.non_qbx_box_target_lists`), trav = geo_data.traversal() wait_for = local_exps.events + events = [] for isrc_level in range(geo_data.tree().nlevels): @@ -512,8 +513,7 @@ def drive_fmm(expansion_wrangler, src_weights, timing_data=None): # {{{ wrangle qbx expansions - qbx_expansions, timing_future = wrangler.form_global_qbx_locals( - src_weights) + qbx_expansions, timing_future = wrangler.form_global_qbx_locals(src_weights) recorder.add("form_global_qbx_locals", timing_future) @@ -525,14 +525,13 @@ def drive_fmm(expansion_wrangler, src_weights, timing_data=None): qbx_expansions = qbx_expansions + local_result local_result, timing_future = ( - wrangler.translate_box_local_to_qbx_local(mpole_exps)) + wrangler.translate_box_local_to_qbx_local(local_exps)) recorder.add("translate_box_local_to_qbx_local", timing_future) qbx_expansions = qbx_expansions + local_result - qbx_potentials, timing_future = wrangler.eval_qbx_expansions( - qbx_expansions) + qbx_potentials, timing_future = wrangler.eval_qbx_expansions(qbx_expansions) recorder.add("eval_qbx_expansions", timing_future) -- GitLab From efb88010036aaa44e39946f01ab5e6842504f11c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Kl=C3=B6ckner?= Date: Wed, 11 Jul 2018 15:44:42 -0400 Subject: [PATCH 5/5] Point boxtree/sumpy in requirements.txt back at master --- .test-conda-env-py3-requirements.txt | 4 ++-- requirements.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.test-conda-env-py3-requirements.txt b/.test-conda-env-py3-requirements.txt index cb126a56..fa6c0426 100644 --- a/.test-conda-env-py3-requirements.txt +++ b/.test-conda-env-py3-requirements.txt @@ -1,5 +1,5 @@ -git+https://gitlab.tiker.net/inducer/boxtree@timing-data +git+https://gitlab.tiker.net/inducer/boxtree git+https://github.com/inducer/pymbolic git+https://github.com/inducer/loopy -git+https://gitlab.tiker.net/inducer/sumpy@timing-data +git+https://gitlab.tiker.net/inducer/sumpy git+https://github.com/inducer/meshmode diff --git a/requirements.txt b/requirements.txt index 192d0abf..6d1e4cce 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ git+https://github.com/inducer/modepy git+https://github.com/inducer/pyopencl git+https://github.com/inducer/islpy git+https://github.com/inducer/loopy -git+https://gitlab.tiker.net/inducer/boxtree@timing-data +git+https://gitlab.tiker.net/inducer/boxtree git+https://github.com/inducer/meshmode -git+https://gitlab.tiker.net/inducer/sumpy@timing-data +git+https://gitlab.tiker.net/inducer/sumpy git+https://github.com/inducer/pyfmmlib -- GitLab