【问题标题】:Make a file availabe on all nodes使文件在所有节点上可用
【发布时间】:2025-12-19 14:20:13
【问题描述】:

我正在编写一个将文件名作为参数并尝试使用常规 C 函数从文件中读取的 MPI 应用程序。我使用qsub 在集群的多个节点上运行此应用程序,而后者又使用mpiexec

应用程序在文件所在的本地节点上运行良好。为此,我直接拨打mpiexec

mpiexec -n 4 ~/my_app ~/input_file.txt

但是当我使用qsub 提交它以在集群的其他节点上运行时,文件读取部分失败。 fopen 调用的应用程序错误——它无法打开文件(可能是因为它不存在)。

问题是,我如何使文件对所有节点可用?我查看了 qsub 联机帮助页,但没有找到任何相关的内容。

【问题讨论】:

  • 在生产集群中执行此操作的常用方法是使用 Lustre、NFS 或类似协议在计算和登录节点之间共享一个文件系统。如果它安装在 /lustre 中,则 MPI 作业中的所有等级都应该能够访问 /lustre/input_file.txt 下的文件。你确定你的集群管理员没有设置类似的东西吗?
  • 已联系管理员,已修复。

标签: c mpi qsub


【解决方案1】:

我猜香草大猩猩不再需要答案了?但是,让我们考虑没有并行文件系统的病态系统和仅在一个节点上可用的文件系统的情况。 ROMIO(一种非常常见的 MPI-IO 实现)中有一种方法可以实现您的目标:

how can i transfer file from one proccess to all other with mpi?

【讨论】: