diff --git a/grudge/reductions.py b/grudge/reductions.py index 026f76d3afd384ea9c491fc5256fdc91eb69ae41..869cebd76751860223cf17ebf0f8ad479a9ecf11 100644 --- a/grudge/reductions.py +++ b/grudge/reductions.py @@ -143,8 +143,9 @@ def nodal_sum(dcoll: DiscretizationCollection, dd, vec) -> float: # NOTE: Don't move this from mpi4py import MPI + actx = vec.array_context - return comm.allreduce(nodal_sum_loc(dcoll, dd, vec), op=MPI.SUM) + return comm.allreduce(actx.to_numpy(nodal_sum_loc(dcoll, dd, vec)), op=MPI.SUM) def nodal_sum_loc(dcoll: DiscretizationCollection, dd, vec) -> float: @@ -177,8 +178,9 @@ def nodal_min(dcoll: DiscretizationCollection, dd, vec) -> float: # NOTE: Don't move this from mpi4py import MPI + actx = vec.array_context - return comm.allreduce(nodal_min_loc(dcoll, dd, vec), op=MPI.MIN) + return comm.allreduce(actx.to_numpy(nodal_min_loc(dcoll, dd, vec)), op=MPI.MIN) def nodal_min_loc(dcoll: DiscretizationCollection, dd, vec) -> float: @@ -213,8 +215,9 @@ def nodal_max(dcoll: DiscretizationCollection, dd, vec) -> float: # NOTE: Don't move this from mpi4py import MPI + actx = vec.array_context - return comm.allreduce(nodal_max_loc(dcoll, dd, vec), op=MPI.MAX) + return comm.allreduce(actx.to_numpy(nodal_max_loc(dcoll, dd, vec)), op=MPI.MAX) def nodal_max_loc(dcoll: DiscretizationCollection, dd, vec) -> float: