MPI-2对组调用的非阻塞视口文件读写采取了特殊的形式,将非阻塞视口文件的读写明确分为两步,一是非阻塞视口读写组调用的开始,二是非阻塞视口读写组调用的结束。其实第二步和MPI_WAIT的功能是一致的。
MPI_FILE_READ_ALL_BEGIN(fh, buf,count,datatype) MPI_FILE_READ_ALL_BEGIN开始一个视口文件的非阻塞组调用,文件句柄fh对应的进程组内的所有进程都需要执行此调用,但是各进程分别拥有自己独立的视口文件指针,各进程分别从自己的视口文件指针所在的当前位置开始读取,读取数据的个数是count个,读取数据的数据类型是datatype。该读取调用执行后立即返回,不必等到真正读取操作的完成,数据从视口文件中读出并且放到buf中是MPI_FILE_READ_ALL_END调用后的结果。 MPI_FILE_READ_ALL_END(fh, buf,status) MPI_FILE_READ_ALL_END也是一个组调用,它和MPI_FILE_READ_ALL_BEGIN结合起来,实现非阻塞视口文件的组读取。当 MPI_FILE_READ_ALL_END调用完成后,前面启动的非阻塞组文件读取操作才真正完成,数据缓冲区中的数据才可以被各个进程访问。 |
||