Skip to content

Commit 376e510

Browse files
committed
Implement distributed evaluation
1 parent 1d351c0 commit 376e510

File tree

9 files changed

+1633
-27
lines changed

9 files changed

+1633
-27
lines changed

.test-conda-env-py3.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ dependencies:
2323
- cython
2424
- gmsh
2525
- pyvkfft
26+
- mpi4py

pytential/qbx/__init__.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,18 @@ class _not_provided: # noqa: N801
7676
pass
7777

7878

79+
class _LevelToOrderWrapper:
80+
"""
81+
Helper functor to convert a constant integer fmm order into a pickable and
82+
callable object.
83+
"""
84+
def __init__(self, fmm_order):
85+
self.fmm_order = fmm_order
86+
87+
def __call__(self, kernel, kernel_args, tree, level):
88+
return self.fmm_order
89+
90+
7991
class QBXLayerPotentialSource(LayerPotentialSourceBase):
8092
"""A source discretization for a QBX layer potential.
8193
@@ -131,7 +143,8 @@ def __init__(
131143
order to be used on a given *level* of *tree* with *kernel*, where
132144
*kernel* is the :class:`sumpy.kernel.Kernel` being evaluated, and
133145
*kernel_args* is a set of *(key, value)* tuples with evaluated
134-
kernel arguments. May not be given if *fmm_order* is given.
146+
kernel arguments. May not be given if *fmm_order* is given. If used in
147+
the distributed setting, this argument must be pickable.
135148
:arg fmm_backend: a string denoting the desired FMM backend to use,
136149
either `"sumpy"` or `"fmmlib"`. Only used if *fmm_order* or
137150
*fmm_level_to_order* are provided.
@@ -204,9 +217,8 @@ def __init__(
204217
else:
205218
assert isinstance(fmm_order, int) and not isinstance(fmm_order, bool)
206219

207-
# pylint: disable-next=function-redefined
208-
def fmm_level_to_order(kernel, kernel_args, tree, level):
209-
return fmm_order
220+
fmm_level_to_order = _LevelToOrderWrapper(fmm_order)
221+
210222
assert isinstance(fmm_level_to_order, bool) or callable(fmm_level_to_order)
211223

212224
if _max_leaf_refine_weight is None:

0 commit comments

Comments
 (0)