从MPI模拟中加入输出二进制文件

时间:2015-04-04 01:21:14

标签: c mpi

我使用C代码从MPI模拟中获得64个输出二进制文件。

这些文件对应于64个进程的输出。什么是将所有这些文件加入单个文件的方法,可能使用C脚本?

2 个答案:

答案 0 :(得分:2)

由于这是标记为MPI,我将提供MPI解决方案,虽然它可能不是提问者可以做的事情。

如果您能够修改模拟,为什么不采用MPI-IO方法?更好的是,查看HDF5或Parallel-NetCDF并获得自我描述的文件格式,平台可移植性以及一系列已经了解您的文件格式的分析和可见工具。

但无论采用哪种方法,一般的想法是使用MPI来描述每个文件的哪个部分属于每个进程。最简单的例子是每个进程是否有助于一维数组。然后对于N个项目的逻辑全局数组,每个进程在偏移“myrank / N”时提供1 / N个项目

答案 1 :(得分:0)

由于所有输出文件都相当小且大小相同,因此很容易使用MPI_Gather在一个节点上组装一个大型二进制数组,然后可以将其写入文件。如果分配大型数组是一个问题,您可以简单地使用MPI_ISend和MPI_Recv一次写入文件。

显然这是一个非常原始的解决方案,但它也非常简单,万无一失,真的不会花费更长时间(假设你在模拟结束时做了所有这些)。