2

在我的 MPI 程序中,我需要将一些计算的结果写入单个(共享)文件,其中每个 MPI 进程将其部分数据写入不同的偏移量。很简单。我已经像这样实现它:

offset = rank * sizeof(double) * N;

for (i = 0; i < N; i++) {
   data = ...;
   MPI_File_write_at(file, offset, &data, 1, MPI_DOUBLE, &status);
   offset += sizeof(double);
}

这有点简化,data实际上是一个数组,但为了简洁起见,我们假设它是一个单一的值。所有进程同时调用这个例程,并且它工作正常。但是,我不确定这是否是使用 MPI 执行 IO 的最佳方式。会使用MPI_File_write_at_allMPI_File_write_ordered带来更好的性能吗?

不幸的是,我在集群(有 Lustre)上的时间非常有限,所以我无法广泛测试所有可能的实现,而且在我的笔记本电脑上进行测试显然无法很好地衡量 IO 性能。

4

0 回答 0