如何在MPI中处理信号

时间:2018-05-01 02:22:43

标签: c signals mpi

我目前正在实现一个将在无限循环中运行的MPI程序,目标是当其中一个进程接收到信号时,所有这些进程将退出无限循环,有一个全局变量标志将指示是否收到信号后,如何使用MPI_Allreduce更新每个进程中的所有标志值?这是我的代码的一部分:

int flag = 0;
void sig_handler(int signo)
{
    if (signo == SIGUSR1) {
        flag = 1;
    }
}

int main(int argc, char **argv)
{
    int count, id;

    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &count);
    MPI_Comm_rank(MPI_COMM_WORLD, &id);

    signal(SIGUSR1, sig_handler);
    while (true)
    {
         if (flag == 1)
         {
              break;
         }
    }

我的困惑是我应该在哪里添加MPI_Allreduce来更新所有进程中的标志值。

0 个答案:

没有答案