【问题标题】:Why does my MPI application trigger a breakpoint?为什么我的 MPI 应用程序会触发断点?
【发布时间】:2017-05-17 16:48:01
【问题描述】:

我有一个简单的 MPI 应用程序,用于在输入所需值时将值从进程 0 传递到其他进程,但它会在“else”上触发断点。

我错过了什么?

#include "stdafx.h"
#include "mpi.h"
#include "stdio.h"
#include "stdlib.h"

int main(int argc, char* argv[])
{
    int rank;
    int value;
    int size;

    MPI_Status status;
    MPI_Init(&argc, &argv);

    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);

    do
    {
        if (rank == 0)
        {
            printf("Enter the value: ");
            scanf_s("%d", &value);
            MPI_Send(&value, 1, MPI_INT, rank + 1, 0, MPI_COMM_WORLD);
        }

        else
        {
            MPI_Recv(&value, 1, MPI_INT, rank - 1, 0, MPI_COMM_WORLD, 
                     &status);
            
            if (rank < size - 1)
                MPI_Send(&value, 1, MPI_INT, rank + 1, 0, MPI_COMM_WORLD);
        }

        printf("Process %d got %d ", rank, value);

    } while (value >= 0);
    
    MPI_Finalize();
    return 0;
}

这是调试的输出:

“MPIHelloWorld.exe”(Win32):加载“C:\WINDOWS\SysWOW64\KernelBase.dll”。无法找到或打开 PDB 文件。

'MPIHelloWorld.exe' (Win32): 加载'C:\WINDOWS\SysWOW64\gdi32.dll'。无法找到或打开 PDB 文件。

“MPIHelloWorld.exe”(Win32):加载“C:\Program Files (x86)\Bonjour\mdnsNSP.dll”。无法找到或打开 PDB 文件。

MPIHelloWorld.exe 已触发断点。

MPIHelloWorld.exe 已触发断点。

线程 0x3308 已退出,代码为 0 (0x0)。

线程 0x1dfc 已退出,代码为 0 (0x0)。

线程 0x2e5c 以代码 0 (0x0) 退出。

程序“[4400] MPIHelloWorld.exe”已退出,代码为 0 (0x0)。

更新:

当我按下 CTRL + 5 时,我在控制台中看到了这个错误:

作业中止: [排名]消息

[0] 致命错误 MPI_Send 中的致命错误: 无效等级的值为 1,但必须是非负数且小于 1

【问题讨论】:

  • 你在调试吗?
  • @Mgetz 是的,我是
  • 你在MPI_Send处设置断点了吗?
  • @Mgetz 不,我还没有...该应用程序刚刚从控制台中断,并且断点出现在 else 旁边
  • 你检查过调试输出面板看它说什么了吗?打赌你会导致异常

标签: c++ windows visual-studio mpi breakpoints


【解决方案1】:

好的,我终于找到答案了!

由于我正在运行 Visual Studio 2015,因此我无法将 Cluster Debugger 用于 MPI 问题是只有 1 个进程在运行。

我打开 CMD 并使用“mpiexec.exe -n 4 myMpiApp.exe”运行我的应用程序,它工作正常。

【讨论】:

    猜你喜欢
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多