目标停顿 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% 可重复的。需要重新启动的管道中的点随分析中的国家/地区而变化。
由于涉及的文件和管道很大,因此很难为这种行为开发一个代表。所以在这个时候,我正在请求有关调试或完全改变课程的后续步骤的建议。以下是一些具体问题:
- 我搜索过,只找到了这份报告 (https://github.com/ropensci/targets/issues/182)。我错过了类似行为的其他报告吗?
- 如果其他人在本地计算机上发现
targets
和 clustermq
的不可靠行为,您可以提供什么提示来解决这些问题?
- 我考虑过在
targets
中从 clustermq
切换到 future
。我想知道该开关是否会提供改进。我没试过future
。因此,如果有人对两者都有经验,我欢迎您的意见。
提前感谢您的任何提示!
我改用 future
并取得了很大的成功。我正在使用 future::plan(future.callr::callr)
。我的管道不再像使用 clustermq
时那样 hangs/stalls。相反,它会根据需要在没有干预的情况下完成。至少对于这条管道,未来是要走的路!
我有一个很长的 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% 可重复的。需要重新启动的管道中的点随分析中的国家/地区而变化。
由于涉及的文件和管道很大,因此很难为这种行为开发一个代表。所以在这个时候,我正在请求有关调试或完全改变课程的后续步骤的建议。以下是一些具体问题:
- 我搜索过,只找到了这份报告 (https://github.com/ropensci/targets/issues/182)。我错过了类似行为的其他报告吗?
- 如果其他人在本地计算机上发现
targets
和clustermq
的不可靠行为,您可以提供什么提示来解决这些问题? - 我考虑过在
targets
中从clustermq
切换到future
。我想知道该开关是否会提供改进。我没试过future
。因此,如果有人对两者都有经验,我欢迎您的意见。
提前感谢您的任何提示!
我改用 future
并取得了很大的成功。我正在使用 future::plan(future.callr::callr)
。我的管道不再像使用 clustermq
时那样 hangs/stalls。相反,它会根据需要在没有干预的情况下完成。至少对于这条管道,未来是要走的路!