繁体   English   中英

如何在给定的运行时间后使用 MPI 写入文件?

[英]How to write a file after a given run time with MPI?

我有一个用 C 编写的模拟代码,与 MPI 并行,在 linux 集群上运行,在 12 小时的挂机时间后杀死作业。 持续时间超过 12 小时的作业必须从程序写入的文件中重新启动。

我的代码目前每 N 个模拟步骤编写这些“重启文件”。 在写入重启文件之前,每个节点都处于相同的模拟步骤是很重要的。

在我的例子中,这些文件很大(> 1GB/进程),因此我不能像我需要的那样频繁地写(需要很多时间和空间)。

此外,一个模拟步骤的执行时间取决于模拟中发生的事情,因此很难预测我的模拟将在 12 小时内完成的许多步骤。 所以我不能决定在我认为将在运行时间的 12 小时之前完成的步骤数之后写入重新启动文件。

结果,当我的工作被终止时,最后一个重启文件可能已经在几个小时前写好了,这迫使我重做最近 12 小时执行的大部分内容。

因此,我正在寻找一种方法来编写重新启动文件作为运行时间的函数。 我曾想过使用 MPI_Wtime(),但是对于给定的运行时,比如 11:50:00,所有处理器不一定处于同一阶段步骤......这不好。 这个问题有简单的解决方案吗?

一旦您的流程达到 11:50:00 标记(或其他合适的截止日期),让它们 AllReduce 使用MPI_MAX完成的迭代次数。 然后他们可以准确地赶上那个迭代次数,并等待其他人用一个简单的 Barrier 做同样的事情。 然后他们可以开始编写重启文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM