分布式Julia中的弹性并行性和容错性

时间:2017-03-07 19:14:48

标签: parallel-processing julia fault-tolerance

Julia如何暴露容错 - 当节点出现故障(有意或无意)以及节点之间的通信发生故障时。

我看到few mentions这样的功能,但无法确切知道如何完成。

1 个答案:

答案 0 :(得分:3)

在pmap文档字符串中,您可以看到已使用retry_关键字参数在那里实现了这一点。

pmap([::AbstractWorkerPool], f, c...; distributed=true, batch_size=1,
on_error=nothing, retry_n=0, retry_max_delay=DEFAULT_RETRY_MAX_DELAY,
retry_on=DEFAULT_RETRY_ON) -> collection
  

...任何错误都会阻止pmap处理其余部分   集合。要覆盖此行为,您可以指定错误   处理函数通过参数on_error接收单个   论证,即例外。该功能可以停止处理   重新抛出错误,或者继续返回任何值   返回内联结果给调用者。

     

计算失败可以   也可以通过retry_on,retry_n,retry_max_delay重试   传递给retry_on,n和max_delay作为参数重试   分别。如果指定了批处理,并且整个批处理失败,则全部   批次中的项目将被重试。

我不认为@parallel宏有这样的东西。但你可以使用Base.wrap_on_error& Base.wrap_retry用于扩展原始函数以处理错误。您可以在https://github.com/JuliaLang/julia/blob/v0.5.0/base/pmap.jl处查看pmap的定义,查看大部分实施细节。

基本策略只是捕获错误(可能是数据)并使用同一个工作程序重试,如果那个工作程序停止,则重试另一个。我想。