c - 如何在 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 来更新所有进程中的标志值。
解决方案
推荐阅读
- azure-data-factory - ADF 计划/触发月末后 50 天
- python - Tensorflow Datasets“so2sat”数据集仅提供黑色 rgb 图像
- ms-word - 来自业务中心的正确 XML 数据集的 XML 映射的不稳定数据
- python - Python:具有重叠和汉明窗口的音频分割
- python - 如何使用 tempfile 模块从 NamedTemporaryFile 获取 Python os.PathLike 对象?
- php - Doctrine DBAL 2.13 $statement->execute() 返回 bool(而不是 Result)
- html - 部分权重大小以适合 html css 中的文本
- reactjs - 无效的挂机呼叫警告
- java - 如何部署 javafx 应用程序
- php - 如何根据虚拟主机设置 php 设置?