目录
一、显式偏移的并行文件读写
1、阻塞方式
1.1 MPI_FILE_READ_AT
1.2 MPI_FILE_WRITE_AT
1.3 MPI_FILE_READ_AT_ALL
1.4 MPI_FILE_WRITE_AT_ALL
2、非阻塞方式
2.1 MPI_FILE_IREAD_AT
2.2 MPI_FILE_IWRITE_AT
3、两步非阻塞组调用
3.1 MPI_FILE_READ_AT_ALL_BEGIN
3.2 MPI_FILE_READ_AT_ALL_END
3.3 MPI_FILE_WRITE_AT_ALL_BEGIN
3.4 MPI_FILE_WRITE_AT_ALL_END
上一节我们介绍了MPI-2中新增加的特性“并行I/O”中的并行文件管理基本操作,本节我们继续对其余内容进行学习。
一、显式偏移的并行文件读写
一种并行文件读写的方法是每一个进程都清楚地知道它将要处理的数据在文件中的准确位置,从而所有的进程可以同时对文件的不同部分进行读写,实现文件的并行操作。在显式偏移方式下,读取位置是作为一个参数传递给读写调用的,不需要文件指针,当然也不需要文件指针的更新。在这种方式下,是没有文件指针的概念的,当然也不需要文件指针的移动操作SEEK,它可以直接从任意指定的位置开始读写。
1、阻塞方式
1.1 MPI_FILE_READ_AT
MPI_FILE_READ_AT从文件fh中的指定偏移位置offset开始,读取count个数据类型为datatype的数据,存放到数据缓冲区buf之中,status是该读写操作完成后返回的状态参数。
MPI_FILE_READ_AT(fh, offset, buf, count, datatype, status)
IN fh 文件句柄
IN offset 读取位置相对于文件头的偏移
OUT buf 读取数据存放的缓冲区
IN count 读取数据个数
IN datatype 读取数据的数据类型
OUT status 返回的状态参数
//c语言的说明
int MPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Status *status)
//Fortran语言的说明
MPI_FILE_READ_AT(FH, OFFSET, BUF, COUNT, DATATYPE, STATUS, IERROR)
<type> BUF(*)
INTEGER FH, COUNT, DATATYPE, STATUS(MPI_STATUS_SIZE), IERROR
INTEGER(KIND=MPI_OFFSET_KIND) OFFSET
1.2 MPI_FILE_WRITE_AT
MPI_FILE_WRITE_AT与MPI_FILE_READ_AT相对应,它从文件句柄fh对应的指定位置offset开始,将数据缓冲区buf中count个类型为datatype的数据写入到该文件中,其它status是返回的状态参数。
MPI_FILE_WRITE_AT(fh, offset, buf, count, datatype, status)
INOUT fh 文件句柄
IN offset 写入文件数据的起始偏移地址
IN buf 将写入数据存放缓冲区的起始地址
IN count 写入数据的个数
IN datatype 写入数据的数据类型
OUT status 写入操作完成后返回的状态信息
//c语言的说明
int MPI_File_write_at(MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Status *status)
//Fortran语言的说明
MPI_FILE_WRITE_AT(FH, OFFSET, BUF, COUNT, DATATYPE, STATUS, IERROR)
<type> BUF(*)
INTEGER FH, COUNT, DATATYPE, STATUS(MPI_STATUS_SIZE), IERROR
INTEGER(KIND=MPI_OFFSET_KIND) OFFSET