MPI IO鲁棒性:共同写入同一文件,相同数据,但偏移量相同

时间:2018-12-21 15:19:03

标签: mpi-io

我想知道MPI(实现)如何处理“误用”的后果,这是由于集体写入数据而造成的,实际上这是串行写入访问(相同数据在相同文件中的相同偏移量)。

这与主题mpi-i-o-mix-of-single-and-multiple-process-output相关。

如果信息少(仅几个字节),例如标头信息,如果条件,可以在rank == 0内完成mpi写操作。另一方面,这可能不适合使用干净的编程风格,因为它引起了对代码的特殊处理,这可能会产生问题。我的问题是,如果我跳过(rank == 0)条件(例如

),MPI会做什么?
MPI_File_open(cComm, pCharFilename, MPI_MODE_RDWR | MPI_MODE_CREATE | 
MPI_MODE_EXCL, MPI_INFO_NULL, &fileHandler);

const MPI_Offset cCurrOffset = 0;
const MPI_Count cCount = 4;
uint8_t myHeader[cCount] = {1,2,3,4};
MPI_Request mpireq = MPI_REQUEST_NULL;
MPI_Status mpistat;

MPI_File_iwrite_at(fileHandler, cCurrOffset, &myHeader, cCount, 
MPI_BYTE, &mpireq);
MPI_Wait(&mpireq, &mpistat);

MPI_File_close(&fileHandler);

严格来说,我触发了竞争条件,但不在乎,因为数据相同。 测试显示至少没有明显的缺点。虽然,我可以想象这对性能不好。还是像openMPI这样的MPI实现在内部优化了这种访问?我看不到这种方法还有其他问题吗? 由于我没有在MPI规范中找到任何答案,也没有找到与此主题有关的任何答案,因此我认为值得一问...

0 个答案:

没有答案