gpt4 book ai didi

mpi - mpirun 的自定义中断处理程序

转载 作者:行者123 更新时间:2023-12-01 09:34:31 40 4
gpt4 key购买 nike

显然,mpirun使用 SIGINT 处理程序将 SIGINT 信号“转发”到它产生的每个进程。

这意味着您可以为启用了 mpi 的代码编写中断处理程序,执行 mpirun -np 3 my-mpi-enabled-executable然后 SIGINT 将为三个进程中的每一个引发。不久之后,mpirun 退出。当您有一个仅打印错误消息然后退出的小型自定义处理程序时,这可以正常工作。 然而 ,当您的自定义中断处理程序正在执行一项重要的工作(例如,进行重要的计算或持久化数据)时,该处理程序不会运行完成。我假设这是因为 mpirun 决定退出太早。

这是按 ctrl-c 时的标准错误(即导致 SIGINT)执行后 my-mpi-enabled-executable .这是理想的预期行为:

interrupted by signal 2.
running viterbi... done.
persisting parameters... done.
the master process will now exit.

这是按 ctrl-c 时的标准错误执行后 mpirun -np 1 my-mpi-enabled-executable .这是有问题的行为:
interrupted by signal 2.
running viterbi... mpirun: killing job...

--------------------------------------------------------------------------
mpirun noticed that process rank 0 with PID 8970 on node pharaoh exited on signal 0 (Unknown signal 0).
--------------------------------------------------------------------------
mpirun: clean termination accomplished

回答任何问题 以下问题将解决我的问题:
  • 如何覆盖 mpirun SIGINT 处理程序(如果可能的话)?
  • 如何避免 mpirun 终止后立即产生的进程 mpirun 终止?
  • 在 mpirun 终止之前,mpirun 可能会向子进程发送另一个信号吗?
  • 有没有办法“捕获”所谓的“信号0(未知信号0)”(参见上面的第二个stderr)?

  • 我在 linux 上运行 openmpi-1.6.3。

    最佳答案

    根据 OpenMPI manpage您可以发送 SIGUSR1SIGUSR2mpirun它将转发它而不是关闭它自己。

    关于mpi - mpirun 的自定义中断处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15870738/

    40 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com