MPI_FILE_READ_AT_ALL_END调用完成前面由MPI_FILE_READ_AT_ALL_BEGIN开始的非阻塞组调用。其中fh和buf和MPI_FILE_READ_AT_ALL_BEGIN中应完全一样。本调用结束后,从文件中读取的数据,已全部存放在buf中,下面的代码就可以使用这些数据了。

MPI_FILE_WRITE_AT_ALL_BEGIN(fh, offset, buf, count, datatype)
INOUTfh写入文件的文件句柄
IN offset写入数据的起始位置
IN buf 写入数据存放的缓冲区
IN count 写入数据的个数
IN datatype写入数据的数据类型
int MPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, void * buf,
int count, MPI_Datatype datatype)
MPI_FILE_WRITE_AT_ALL_BEGIN(FH, OFFSET, BUF, COUNT, DATATYPE,
IERROR)
<type> BUF(*)
INTEGER FH, COUNT, DATATYPE, IERROR
INTEGER (KIND=MPI_OFFSET_KIND) OFFSET

MPI_FILE_WRITE_AT_ALL_BEGIN"开始"一个非阻塞的写组调用,与文件句柄fh对应的进程组内的进程都从各自进程指定的偏移位置offset开始,将buf中count个类型为datatype的数据,写入到文件中。它和MPI_FILE_READ_AT_ALL_BEGIN的用法完全一样,只不过在意义上,一个执行写,一个执行读罢了。这一语句的完成要通过进程组内各进程都执行MPI_FILE_WRITE_AT_ALL_END来实现。

MPI_FILE_WRITE_AT_ALL_END(fh, buf, status)
INOUTfh写入文件的文件句柄
IN buf 写入数据存放的缓冲区
OUTstatus该调用完成后返回的状态信息
int MPI_File_write_at_all_end(MPI_File fh, void * buf, MPI_Status *status)
MPI_FILE_WRITE_AT_ALL_END(FH, BUF, STATUS, IERROR)
<type> BUF(*)
INTEGER FH, STATUS(MPI_STATUS_SIZE), IERROR

MPI_FILE_WRITE_AT_ALL_END完成前面MPI_FILE_WRITE_AT_ALL_BEGIN开始的非阻塞写操作,该调用结束后,可以保证buf中的数据已经全部写到文件的指定位置。