C++ 为什么我的MPI应用程序会触发断点?
我有一个简单的MPI应用程序,用于在输入所需值时将值从进程0传递到其他进程,但它会触发“else”上的断点 我错过了什么C++ 为什么我的MPI应用程序会触发断点?,c++,windows,visual-studio,mpi,breakpoints,C++,Windows,Visual Studio,Mpi,Breakpoints,我有一个简单的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
#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;
}
#包括“stdafx.h”
#包括“mpi.h”
#包括“stdio.h”
#包括“stdlib.h”
int main(int argc,char*argv[])
{
整数秩;
int值;
整数大小;
MPI_状态;
MPI_Init(&argc,&argv);
MPI通信等级(MPI通信世界和等级);
MPI_通信大小(MPI_通信世界和大小);
做
{
如果(秩==0)
{
printf(“输入值:”);
扫描单位(“%d”和值);
MPI_发送(&value,1,MPI_INT,秩+1,0,MPI_COMM_WORLD);
}
其他的
{
MPI_Recv(&value,1,MPI_INT,排名-1,0,MPI_COMM_WORLD,
&地位);
如果(排名=0);
MPI_Finalize();
返回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_发送中出现致命错误:
无效秩的值为1,但必须为非负且小于1。好的,我终于找到了答案 我无法将群集调试器用于MPI,因为我正在运行Visual Studio 2015 问题是只有一个进程在运行
我打开了CMD并使用“mpiexec.exe-n4 myMpiApp.exe”运行了我的应用程序,它运行正常。您正在调试它吗?@Mgetz是的,我知道您是否在
MPI\u Send
设置了断点?@Mgetz否,我没有…该应用程序刚刚从控制台中断,一个断点出现在其他程序旁边。您是否检查了调试输出面板以查看它的内容?我敢打赌你正在引发一个异常