linux mpi程序,Linux_用gdb调试mpi程序的一些心得, Linux下MPI (Message Passage Inter - phpStudy...

在Linux环境下,调试MPI程序是个挑战。不同于Windows下的集成调试工具,Ubuntu用户通常需要借助gdb。文章介绍了如何通过mpirun –gdb –np 3 myprogram启动调试,并在遇到子进程调试难题时,通过暂停程序并查找pid,使用gdb挂载进程进行调试。此外,还提到了在代码中添加获取pid的方法,以便区分主节点和子节点进程。
摘要由CSDN通过智能技术生成

用gdb调试mpi程序的一些心得

Linux下MPI (Message Passage Interface) 的程序不太好调试,在windows下vs2005以上的IDE有集成的简便MPI调试工具,没有用过,有兴趣的可以试验一下。下面总结了一些最近在用MPI和c语言写程序时的调试经验(Ubuntu环境,c语言, mpich 1.2.7)。

需要注意的几个小问题

在编译程序的时候 –g 是一定要加的,不然在gdb调试的时候可能会报类似“source is not available”的错误。开始我调程序的时候我都把我的程序的每个调试版本,分别发送到集群中的每台机器上面,然后在mpirun –machinefile host –np 3 myprogram 运行我的程序,这种方法没有效率,只能在最后记录实验结果的时候或者最后调试阶段才能用。有效率的方式是 mpirun –np 3 myprogram 在本机直接运行程序,这样mpi就会在本机开3个myprogram的进程,这样不接网线都可以方便的调试mpi的程序。这是几个小问题,下面切入关键部分。

用gdb来调试mpi的程序

首先,本文所用的mpich版本为1.2.7,可能跟其他版本有一定的差异,RTFM,看看自己所用版本的使用手册来解决版本上的差异。

Mpi程序运行的时候都是通过mpirun 后接参数和你的程序,gdb也是类似的过程,所以你不可以直接 gdb mpirun –np 3 myprogram,但你可以直接mpirun –gdb –np 3 myprogram。这样你就可以再gdb中调试你的程序了。

不过,这样有个问题,你可以调试在主节点运行的部分,也就是相对于集群而言,你本机所运行的部分࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值