握手方式 握手方式涉及到一对关于窗口做作的进程,即对窗口进行操作的进程和窗口所在的进程,通过二者的握手来达到对窗口的同步管理。 MPI_WIN_START(group, assert, win) INgroup进程组 INassert 程序的声明 INwin窗口对象 int MPI_Win_start(MPI_Group group, int assert, MPI_Win win) MPI_WIN_START(GROUP, ASSERT, WIN, IERROR) INTEGER GROUP, ASSERT, WIN, IERROR 在握手方式下,只有当调用了MPI_WIN_START后,才可以对进程组group内其它进程的窗口进行不同的窗口操作。assert主要是用于实现的优化。
MPI_WIN_COMPLETE(win) 在握手方式下,对于每一个MPI_WIN_START调用,都必须有一个相应的MPI_WIN_COMPLETE调用与之相匹配,在这两个调用之间,是对窗口的具体操作语句。当这一调用结束后,意味着前面对窗口的各种操作都已经完成
MPI_WIN_POST(group, assert, win) 当某进程执行了MPI_WIN_POST调用之后,意味着从该调用之后,本地的窗口向其它进程开启,其它的进程可以对本进程的窗口进行远程访问,MPI_WIN_POST调用和试图访问本地窗口的MPI_WIN_START相握手,握手成功则意味着双方达成一致,一方允许远程访问,一方可以进行远程访问。 MPI_WIN_WAIT完成从前面一个MPI_WIN_POST开始的对本地窗口的所有远程访问操作,该调用的结束意味着前面所有对本进程远程窗口访问的完成。它和远程访问本进程的进程中的MPI_WIN_COMPLETE调用相握手,一旦握手成功则意味着双方的远程窗口访问操作都已经成功完成。 MPI_WIN_TEST(win,flag) MPI_WIN_TEST操作和前面介绍的非阻塞通信中的各种TEST操作相类似,它探测关于窗口的非阻塞操作是否完成。如果该调用结束后,返回标志flag=true,则其效果和MPI_WIN_WAIT完全一样,若flag=false,则表示对窗口的非阻塞操作还没有结束,当然也就不能访问窗口中的数据,可以等待一段时间后再进行探测或者直接调用MPI_WIN_WAIT完成对窗口的操作。 |
|||