MPI_Send的缓冲区大小问题

在迁移MPI程序时遇到“fatal error in MPI: other MPI error”错误,发现是由于发送大文件时缓冲区大小问题引起。通过调整缓冲区大小及使用MPI_Bsend的缓冲模式,解决了64KB的限制问题。但发现静态声明的数组大小限制导致段错误,需使用动态声明。
摘要由CSDN通过智能技术生成

        最近一直在忙程序的搬家问题,其实说起来不能再简单了:就是把在公司调好的一个MPI程序搬到gz的大系统上去跑,本以为没啥问题的一个步骤实现起来却各种问题,既遇到编译的问题(第一篇博客中提到的)并解决之后,程序的运行也出现了错误。错误信息为“fatal error in MPI: other MPI error”,而且死掉的进程都是发送进程,这让我百思不解。

        然后我怀疑了各种问题尝试了各种方式:首先,使用gdb调试,但问题在于由于需要修改-O3的优化选项才能调试MPI程序,这导致了程序跑的奇慢……发火,等得受不了了;然后,我就只好回归了最原始的输出调试,但我又惊奇的发现,本应该输出的信息没有输出或者没有按顺序输出,实在是混淆视听发火,问了贵鑫才知道是因为缓冲区可能不满,所以利用flush解决了问题(语法为:cout<<"输出的内容"<<……<<flush);在输出信息的帮助下,我逐渐将出错的位置锁定在了用MPI_Send发送大文件的一条语句上,因为我发现,发送其他的信息比如文件名,文件大小等小的信息都可以正常接收,但发送文件时就出错,我怀疑可能是buffer大小的问题。因为文件名等信息的buffer设置为100个字节,而发送的文件比较大,采用循环发送的方式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值