目标停顿 tar_make_clustermq()

targets stalls with tar_make_clustermq()

我有一个很长的 targets 管道(执行需要一个多小时),可以并行执行。具体来说,许多(但不是全部)计算可以在 155 个国家和 60 年内并行进行。例如,有时特定国家/地区的计算会从各大洲汇总到全世界,而该总和不适合并行执行。我 运行 仅在我的本地机器上连接管道(而不是在集群或联网的计算机上)。

当我运行与5个国家和tar_make_clustermq(workers = 8)(在10核机器,14英寸Apple silicon MacBook Pro和iMac Pro上)进行管道时,管道成功。此外,我看到同时使用了 5 个处理器。但是,当我 运行 有 6 个或更多国家/地区的管道时,有几次管道停滞或看似切换到单线程执行。我发现我需要使用 tar_make_clustermq(workers = 8) 重新启动管道或(更糟)使用 tar_make() (单线程)重新启动管道以使其再次运行。

管道中需要重新启动的点对于一组特定国家/地区是 100% 可重复的。需要重新启动的管道中的点随分析中的国家/地区而变化。

由于涉及的文件和管道很大,因此很难为这种行为开发一个代表。所以在这个时候,我正在请求有关调试或完全改变课程的后续步骤的建议。以下是一些具体问题:

提前感谢您的任何提示!

我改用 future 并取得了很大的成功。我正在使用 future::plan(future.callr::callr)。我的管道不再像使用 clustermq 时那样 hangs/stalls。相反,它会根据需要在没有干预的情况下完成。至少对于这条管道,未来是要走的路!