gpt4 book ai didi

c - 通过探测从缓冲区写入文件,C 程序

转载 作者:行者123 更新时间:2023-11-30 15:25:22 24 4
gpt4 key购买 nike

我正在使用以下代码将模拟输出写入文件

sprintf(filename, "time_data.dat");
FILE *fp = fopen(filename,"w");
for(i=0;i<ntime;i++){
compute_data();
fprintf(fp, "%d %lf %lf \n", step, time_val ,rho_rms);
}
return;

在我的桌面上,我可以看到文件 time_data.dat 每隔几个小时更新一次(compute_data() 每个时间步需要几百秒,在 i7 计算机上使用 OpenMP)。我现在已将作业提交到集群节点(运行 ubuntu 服务器的 E5 2650 处理器)。我已经等了5天了,文件中还没有出现一行行。我愿意

tail -f time_data.dat

检查输出。模拟还需要几周时间才能完成。我迫不及待地想看看我的输出是否良好。有没有办法可以探测节点中的操作系统以刷新其缓冲区而不干扰计算?如果我现在取消这项工作,我确信不会有任何输出。请注意,输出文件写入的硬盘是在多个节点和主节点上使用 NFS 共享的硬盘。这会造成任何麻烦吗?是否存在实际写入输出的临时文件位置?

PS:我执行了 du -h 来查找显示大小为 0 的文件。我还尝试了 ls -l proc/$ID/fd 来确认文件确实打开了。

最佳答案

您可以使用lsof或简单地ls -l/proc/$(pidof yoursimulation)/fd来检查(在集群节点上)确实time_data .dat 已打开。

对于这样长时间运行的程序,我认为值得考虑使用:

  • application checkpointing技巧
  • persistency您的应用程序数据,例如在某些数据库中
  • 设计某种方式来查询应用的状态(例如,使用一些 HTTP 服务器库,例如 libonion ,或者至少使用一些 JSONRPC 或其他服务来查询有关状态的信息)

关于c - 通过探测从缓冲区写入文件,C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27963281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com