如何使用 Dask 并行化自适应时间步进器

问题描述 投票:0回答:0

我想知道是否有可能并行化一个自适应时间步进器,比如 Runge-Kutta 23 方法(或更高阶)与 Dask?

假设我有 10 个 Dask worker(每个有 1 个 core/rank),我为每个 worker 分配 10 个网格点来进行时间整合(总共 100 个网格点)。在第一个时间步,所有工作人员都被赋予固定的时间步长

dt0
,然后每个工作人员必须为其 10 个网格点计算 RK2 和 RK3 方法的差异,以某种方式 将此信息发送给另一个工作人员/核心/rank,第 11 个 worker 将计算所有 100 个网格点的总误差,并据此调整下一个时间步长的时间步长,然后第 11 个 worker 将这个新的时间步长
dt1
广播给所有的其余的工人,所以所有 100 个网格点总是以相同的时间值整合。

我可以看到这是一个可行的工作流程。我唯一不确定的是,到目前为止还没有找到一个例子,就是如何处理与调整时间步长的第 11 个工人的通信。例如,我如何将结果从一个工作人员发送到另一个工作人员,以及如何暂停一个工作人员直到它从另一个工作人员收到某些数据?

这里的任何提示或指示将不胜感激!

dask numerical-integration
© www.soinside.com 2019 - 2024. All rights reserved.