共享文件的非阻塞组读写,也是分成两步来进行的,第一步是启动非阻塞的组读写,然后立即返回;第二步是完成非阻塞的组读写。
MPI_FILE_READ_ORDERED_BEGIN(fh, buf, count, datatype)
INOUTfh文件句柄
OUTbuf 读取数据存放的缓冲区
IN count 读取数据的个数
IN datatype读取数据的数据类型
int MPI_File_read_ordered_begin(MPI_File fh, void * buf, int count,
MPI_Datatype datatype, MPI_Status * status)
MPI_FILE_READ_ORDERED_BEGIN(FH, BUF, COUNT, DATATYPE, IERROR)
<type> BUF(*)
INTEGER FH, COUNT, DATATYPE, IERROR

MPI_FILE_READ_ORDERED_BEGIN开始一个非阻塞的共享文件组读写,它的作用是让与fh相联系的进程组内的每一个进程按照其进程编号rank的大小,从小到大,依次从共享文件中读取count个数据类型为datatype的数据,存放在各自的缓冲区buf中,但是该调用不必读取操作完成就可以立即返回,而该读取操作的完成是通过调用MPI_FILE_READ_ORDERED_END实现的。

MPI_FILE_READ_ORDERED_END(fh, buf, status)
INOUTfh文件句柄
OUTbuf 读取数据存放的缓冲区
OUTstatus返回的状态信息
int MPI_File_read_ordered_end(MPI_File fh, void * buf, MPI_Status * status)
MPI_FILE_READ_ORDERED_END(FH, BUF, STATUS, IERROR)
<type> BUF(*)
INTEGER FH, STATUS, IERROR

MPI_FILE_READ_ORDERED_END完成前面启动的非阻塞共享文件组读取调用,其中fh是文件句柄,buf是读取数据存放的缓冲区,status是返回的状态信息。当这一调用结束后,各进程才可以使用从文件中读取的缓冲区buf中的数据。

MPI_FILE_WRITE_ORDERED_BEGIN(fh, buf, count, datatype)
INOUTfh共享文件句柄
IN buf 写入数据存放的缓冲区
IN count 写入数据的个数
IN datatype写入数据的数据类型
int MPI_File_write_ordered_begin(MPI_File fh, void * buf, int count,
MPI_Datatype datatype)
MPI_FILE_WRITE_ORDERED_BEGIN(FH, BUF, COUNT, DATATYPE, IERROR)
<type> BUF(*)
INTEGER FH, COUNT,DATATYPE, IERROR

MPI_FILE_WRITE_ORDERED_BEGIN开始一个非阻塞的共享文件组写入,它的作用是让与fh相联系的进程组内的每一个进程按照其进程编号rank的大小,从小到大,依次将各自缓冲区buf中count个数据类型为datatype的数据,写入到共享文件中,但是该调用不必写入操作完成就可以立即返回,而该写入操作的完成是通过调用MPI_FILE_WRITE_ORDERED_END实现的。