MPICH2(r8733)的错误容忍

以下为mpich2-trunk-r8733中的README第七节“ 错误容忍”的翻译
==================
MPICH2能够一定程度地容忍进程失效,并支持checkpointing/restart.

容忍进程失效
-----------------------------
本节中描述的这些特性应该被认为是实验性质的。即意味着它们并没有得到全面的测试,在未来的释放版中它们的行为可能发生改变。下文的说明,这是错误容忍所期待的。

 - ERROR RETURNS:   MPICH2中的通信失败不是致命性的错误。这意味着如果用户设置错误处理器为MPI_ERRORS_RETURN,MPICH2将在一个通信失败时间发生时返回一个适当的错误码。当一个进程与另一个进程通信时,检测到一个通信失败,它认为那个进程失效了从而将不再尝试和那个进程通信。用户可以,不管怎样,继续和其他的进程通信。对一个失效进程进行任何显著的发送或者接受操作,或者在一个拥有一个失效进程的通信器使用通配符接收操作,将会迅速地完成,并返回一个相对应的错误码。

 - COLLECTIVES:    对于执行在带有一个失效进程的通信器上集合操作,集合操作将返回一个错误给一些、但不必是全部的进程。一个集合操作在一个给定的进程上调用返回MPI_SUCCESS,意味着那个进程执行的部分集合操作已经成功的。

 - PROCESS MANAGER:    进程管理器:如果使用的是hydra进程管理器,hydra将会检测失效进程并通知MPICH2库。用户可以通过使用在MPI_COMM_WORLD中预定义的属性MPICH_ATTR_FAILED_PROCESSES,查询失效进程列表。这个属性值是一个包含了失效进程的进程号的整数数组。这个数组以MPI_PROC_NULL尾。

       MPICH2释放版的具体说明:用户需要在应用程序中声明下面extern型变量从而可以使用这个属性(这个想法原本应该被加入到mpi.h, 但是还没有那样做,是为了维持1.3.x释放版系列中的ABI(应用程序二进制接口)兼容性):
             extern int MPICH_ATTR_FAILED_PROCESSES;
       MPICH2释放版的具体说明: MPICH_ATTR_FAILED_PROCESSES属性目前只是定义在MPI_COMM_WORLD上,还没有定义到其他的通信器上。
   请注意默认情形下当任何进程在调用MPI_Finalize之前终止时,hydra将会abort整个应用程序。为了容许应用程序继续执行而不管失效的进程,你将需要启用mpiexec的-disable-auto-cleanup选项。

 - FAILURE NOTIFICATION: 这是一个不支持的功能和在将来几乎肯定会改变!

   当前的释放版中,hydra通过发送一个SIGUSR1信号将进程失效事件通知给MPICH2库。应用程序能够捕获这个用来通知进程失效的信号。如果应用程序用自己的处理程序替换了MPICH2库的信号处理程序,应用程序必须保证在自己的处理程序调用MPICH2库的信号处理程序。请注意,在一个信号处理函数中你不能调用任何MPI函数。

   在未来的释放版中,计划是提供一个形如MPIX_Failure_notify的调用来容许用户注册一个将会在进程失效被调用的回调函数。为了维持1.3.x释放版系列中的ABI(应用程序二进制接口)兼容性,这个机制还没有被加入.

你可能感兴趣的:(mpi,ft,错误容忍)