请问:基于mpi的并行程序调试问题

C20062222 2007-05-25 10:48:27
最近在开发基于mpi的并行程序,但遇到了一个问题:程序怎么调试?
我开发的是管理者/工人模式的并行程序,发现无法调试,我现在唯一的办法就是写日值, 参考了一些mpi方面的资料,也没有提到这样程序的调试问题,请问开发并行程序的前辈们:是否有调试这种程序刚好的途径和工具?我现在的开发环境是vc6
多谢了

另外:发现搞mpi的人并不是很多,但随着多核的发展,这毕竟是一个趋势,哪位前辈能否组建一个这样的群,供大家学习与交流。我的号召力不够,希望斑竹或者有经验的前辈来组织一下
...全文
1615 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
intel_iclifort 2011-06-23
  • 打赏
  • 举报
回复
另外,如果主要的使用Fotran编程,新的2008规范中提出了Co-array的概念,可以同时支持单机多核和多节点编程。不用自己手动编写消息通讯的API了, 利用Intel 编译器自动实现。
intel_iclifort 2011-06-23
  • 打赏
  • 举报
回复
说说自己的经验,主要是Linux,供参考。基于Windows的MPI接触不多

在MPI程序实时调试方面,最方便的还是TotalView,好像所有的Linux/Unix平台都能支持。图形界面使用也相当方便,可以看到所有的MPI进程的状态,然后手工调整hold某一个rank的进程。特别适合查找MPI API的编程错误,比如不配对的情况。 好像没有Windows版本。 可惜这个商业软件的价格比较贵

Intell的Trace Collector和Trace Analyzer更侧重于MPI性能分析和调优。因为采用的动态收集,静态分析的方法,所有可以看到整个运行过程中的所有MPI通信情况,调优也非常有针对性。 支持各种编译器GCC/ICC/IFORT,也可以和MPICH,Intel MPI一起使用。 其中附带的一个小工具Intel Message Checker也可以帮助查找 MPI API的错误。目前也支持Linux

Intel MPI的实现是基于MPICH2的,完全支持TCP/Share Memory/DAPL/infiniband,包括混合使用。一个比较有特点的功能是,可以在运行时通过环境变量或者参数,来选择MPI程序运行的计算网络类型,不需要重新编译(也不用针对不同的计算网路,准备几套可执行程序)。性能就不用说了,比较一下就清楚了。这个倒是Linux和Windows都有的。

上面提到的这些工具都是商业软件,可以申请30天的试用许可的。
理想哥 2011-06-23
  • 打赏
  • 举报
回复
学习了,又长知识了
zhuliting 2011-06-21
  • 打赏
  • 举报
回复
我现在也在做并行计算,主要用MPI,欢迎大家多交流。
DrPerformance 2007-06-06
  • 打赏
  • 举报
回复
MPI对于分布式存储有优势,而OMP之类的,在目前核比较少的情况下,如四核,八核还可以。但是以后对于更大数量的非共享存储就没有那么好的扩展性了。
当然MPI也有其缺点,所有并行通信全部要手控,编程费事。
新的并行语言也在研究之中,我们目前在关注与UPC的研究,也许是未来的一个好的出路。
Alnitak 2007-05-31
  • 打赏
  • 举报
回复
intel的Trace Collector和Trace Analyzer并不要求MPI的实现一定是Intel自己的MPI库。至于性能方面,Intel的MPI库在自己的平台上应该有很好的优化。
flyingdog 2007-05-29
  • 打赏
  • 举报
回复
在mpi方面的确没有用过intel的工具。以后试试。
intel的调试工具一定要结合intel的mpi实现吗?
目前我们这里是infiniband网络,使用mvapich,不知道intel的mpi实现性能如何。
IntelSupport 2007-05-28
  • 打赏
  • 举报
回复
楼上的用用Intel Trace Collector 和 Intel Trace Analyzer

这两个是intel开发的专门用于MPI 调试的工具

flyingdog 2007-05-27
  • 打赏
  • 举报
回复
在linux下,mpich也有对应的gdb调试功能的,其实就是mpi和gdb的整合,不过我用得不熟,也觉得不是很好用。
对于mpi程序,我更喜欢输出调试,可能就是你说的写日志了吧。

其实mpi和多核发展并没有太大关系。多核是SMP结构,更多使用openmp或者自己写多线程并行化。而mpi多用于机器间的通信,比如集群。
michaelxuyw 2007-05-26
  • 打赏
  • 举报
回复
可以看一下MPICH2在windows平台开发的那个官方pdf文件,里面有介绍怎样手动启动多个进程和使用visual studio调试的方法

568

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧