Linux下用eclipse调试C/C++并行程序(单机MPI)
并行调试工具
很多人调试MPI程序都是用print的,这里有一篇介绍的文章:https://segmentfault.com/a/1190000000447786?_ea=179668
里面的很多工具我都试着尝试过:
- TotalView:实在太贵,之前咨询过价格,别人根本就没有给报价,一般只有大型超算才配备,没有单机版本,价格估计在百万以上具体多少不清楚
- Allinea DDT:官网报价几百美元,国内代理商报价一万不到,之前联系想购买的,但是由于中美贸易战被禁止了,这个是单机版本的报价,可以调试openmp cuda mpi openacc等
- GDB:可以参照openmpi官网的教程,可以用gdb进行调试,有终端图形化调试操作,比print好用
- Valgrind:开源内存检查工具
- Intel Parallel Studio:集成化的调试工具,可以检查内存泄露、竞争等,但是没有办法想gdb那样一步一步调试(可能是我不知道,如果可以告诉我一下),学生版可以申请四个节点的调试工具
- eclipse:接下来主要介绍这个,这个免费的,可以并行的一步一步调试,缺点就是在普通PC机上,可能是由于CPU寄存器太少,调试几步就卡死了,我在工作站上调试没有发现这个问题,我只会单机调试。
eclipse、mpi环境
- 先配置mpi运行环境
- 从官网下载Eclipse IDE for Scientific Computing:
- 在下一步之前,首先确保你的mpi程序可以在eclipse里面正确编译并且能运行起来!
配置eclipse
Run->Debug Configurations:
Parallel Application : 新建一个新的调试项目
Basic Options:
Number of processes : 并行调试的进程数
超线程(OpenMPI)的话需要在Advanced Options里面加入–oversubscribe
程序运行参数在上面的Arguments里面添加
6个核跑的并行调试画面,小黄点就是进程,点击不同小黄点可以看不同的进程里面的内容。