使用Visual Studio对c++编写而成的MPI程序进行断点调试

使用Visual Studio对c++编写而成的MPI程序进行断点调试

本方法归纳自MPI debugging with VS2012以及b站视频VS中调试MPI程序

这是一段简单示例代码,我们以它为例子展示如何在Visual Studio中调试MPI程序

#include <mpi.h>
#include <iostream>
#include <Windows.h>

int main(int argc, char* argv[])
{
	MPI_Init(&argc, &argv);

	int world_size;
	MPI_Comm_size(MPI_COMM_WORLD, &world_size);

	int world_rank;
	MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    Sleep(20000);
	if (world_rank == 0)
	{
		// Sending a message
		const int message = 42;
		MPI_Send(&message, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
		std::cout << "Process 0 sends number " << message << " to process 1\n";
	}
	else if (world_rank == 1)
	{
		// Receiving a message
		int received_message;
		MPI_Recv(&received_message, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
		std::cout << "Process 1 received number " << received_message << " from process 0\n";
	}

	MPI_Finalize();
	return 0;
}

设置调试参数

如下图所示,将命令修改为mpiexec.exe所在的路径,默认路径是C:\Program Files\Microsoft MPI\Bin\mpiexc.exe,按照自己的需求修改命令参数为-n count $(TargetPath),这里的count是你想要同时运行的进程个数,这里为2.

添加Sleep语句以及设置断点

在断点之前设置Sleep语句以便我们有时间进行操作,一般20s左右即可Sleep(20);

调试并附加到进程

开始调试,点击调试>开始调试后点击调试>附加到进程后会弹出如下界面,搜索并选择你所运行的程序,可以看到由于我在开始设置参数时命令参数设置为2,这里出现了两个进程,将它们附加到进程中。

观察不同进程中的值

稍等片刻之后会出现下列画面,如果没有出现右侧的并行监视窗口,则在调试>窗口>并行监视中可以打开窗口。

此时我们在并行监视中查看到的进程是world_rank=1的进程,我们双击进程ID为20716的进程可以进入world_rank=0的进程。


然后其他调试操作与串行程序并没有区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值