并行运算遇到的fatal error(已解决)_mpidi_ch3u_receive-程序员宅基地

技术标签: 自学  openfoam  

 遇到的问题

Fatal error in MPI_Sendrecv: Message truncated, error stack:
MPI_Sendrecv(230).................: MPI_Sendrecv(sbuf=0x39837f0, scount=5776, MPI_BYTE, dest=4, stag=4, rbuf=0x3984e90, rcount=5776, MPI_BYTE, src=2, rtag=4, MPI_COMM_WORLD, status=0x715430) failed
MPIDI_CH3U_Receive_data_found(129): Message from rank 2 and tag 4 truncated; 55696 bytes received but buffer size is 5776

这是为啥啊,不知道怎么办。

搜索信息

下面搜的一些链接,但是暂时无法解决问题。

MSMPI Buffer size issue ( Message truncated ) (microsoft.com)

PMPI_Bcast: Message truncated, - Intel Community

Fatal error in MPI_Sendrecv: Message truncated, error stack:
MPI_Sendrecv(230).................: MPI_Sendrecv(sbuf=0x2d1d880, scount=5776, MPI_BYTE, dest=4, stag=4, rbuf=0x2d1ef20, rcount=5776, MPI_BYTE, src=2, rtag=4, MPI_COMM_WORLD, status=0x715430) failed
MPIDI_CH3U_Receive_data_found(129): Message from rank 2 and tag 4 truncated; 55696 bytes received but buffer size is 5776
Fatal error in MPI_Sendrecv: Message truncated, error stack:
MPI_Sendrecv(230): MPI_Sendrecv(sbuf=0x10484160, scount=55696, MPI_BYTE, dest=3, stag=4, rbuf=0x10491b00, rcount=55696, MPI_BYTE, src=1, rtag=4, MPI_COMM_WORLD, status=0x715430) failed
do_cts(629)......: Message truncated; 88736 bytes received but buffer size is 55696
Fatal error in MPI_Sendrecv: Message truncated, error stack:
MPI_Sendrecv(230): MPI_Sendrecv(sbuf=0x361bcc0, scount=6400, MPI_BYTE, dest=MPI_PROC_NULL, stag=5, rbuf=0x36207f0, rcount=6400, MPI_BYTE, src=1, rtag=5, MPI_COMM_WORLD, status=0x715430) failed
do_cts(629)......: Message truncated; 88736 bytes received but buffer size is 6400

测试

好像找到一个很相似的问题:

Message truncated, error stack: MPIDI_CH3U_Receive_data_found -- CFD Online Discussion Forums (cfd-online.com)

做了里面推荐的Test-parallel,整个程序没问题,感觉可能是设置问题。

 将parallel案例复制到了相应路径下,然后编译,编译成功

 到我的计算案例下面,测试。

 然后输出

 同时在计算案例下面输出log文件。

/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.3.x                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
Build  : 2.3.x
Exec   : Test-parallel -parallel
Date   : Nov 18 2021
Time   : 17:40:20
Host   : "K228"
PID    : 1250
Case   : /ncsfs02/yyxie/parallel350
nProcs : 5
Slaves : 
4
(
"K228.1251"
"K228.1252"
"K228.1253"
"K228.1254"
)

Pstream initialized with:
    floatTransfer      : 0
    nProcsSimpleSum    : 0
    commsType          : nonBlocking
    polling iterations : 0
sigFpe : Floating point exception trapping - not supported on this platform
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

End

Finalising parallel run

初步解决方案:

根据我的案例的报错:

Fatal error in MPI_Sendrecv: Message truncated, error stack:
MPI_Sendrecv(230).................: MPI_Sendrecv(sbuf=0x60d94d0, scount=4624, MPI_BYTE, dest=MPI_PROC_NULL, stag=4, rbuf=0x60da6f0, rcount=4624, MPI_BYTE, src=3, rtag=4, MPI_COMM_WORLD, status=0x715430) failed
MPIDI_CH3U_Receive_data_found(129): Message from rank 3 and tag 4 truncated; 36864 bytes received but buffer size is 4624

它的意思是3和4进程之间传递不了信息。根据我在网上冲浪那么久的直觉,我觉得我设2或者3个并行应该不会报错。然后我设了个2的,它居然跑起来了。我直接现场流泪。

而且根据前面对MPI的测试,发现系统配置应该是没有问题的。所以,我感觉是代码哪里逻辑存在问题,之后再熟悉一下代码,看看能不能改过来。

当然我还有一个想法,decomposeParDict的设置其实是有一些rules的,不是想这么切就这么切的,毕竟并行之间应该是要交换信息的。要考虑分布板那一块的不同。所以之后也会尝试不同的切割方法。

然后在cfdonline发布了一个问题,不知道有没有回我嘤嘤嘤

Fatal error in MPI_Sendrecv: Message truncated, error stack -- CFD Online Discussion Forums (cfd-online.com)

又找到了一个可能的原因:

MPI job won't work on multiple hosts - Bug Reports - Palabos Forum

在这里面说到了一个类似的问题,好像是代码里面有个bug,

The temporary variable with red color, which would be sent as the sizes of dynamic data to other process, can be rewriten by other program before it is send. Thus caused that the data size other process received was the modified wrong number. 

然后解决方案是:

So if we replace the temporary variable above (red one) with a global variable or something lives longer than the sending time, it would fix this problem.

fortran - MPI_Cart_create error - Stack Overflow

又看到一个和MPI和MPICH的关系友观

又遇到问题:

并行计算收敛和串行差好多。暂时不知道咋整。

换一个简单的案例,分5块并行是能跑起来的。或许跟网格划分真的有关系。我在想是不是要在规则的面上切割。

解决了:

我在想,如果不是MPI_Sendrecv出问题,那真的是信息那一部分有问题。结果发现真的是,往前面读代码,分清它的错误来源。感觉是mapping出了错,接着就发现原来是在boundbox就已经出错了。

因为从checkMesh里面读的语句是流体网格的范围,但是其实应该要考虑颗粒网格的范围。因此编译到这一步的时候,要手动修改成颗粒网格范围,而且每个processor直接是要完全衔接那种,不能重合啥的。

其实就是分割进程的时候就出问题了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/imastrid/article/details/121085124

智能推荐

linux报错Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&inf_linux 安装vsftpd couldnot retrieve mirrorlist-程序员宅基地

文章浏览阅读1.6k次。解决方法:服务器未联网,联网即可解决_linux 安装vsftpd couldnot retrieve mirrorlist

matlab rx算法,精通MATLAB智能算法(2015代码)-程序员宅基地

文章浏览阅读363次。文件名大小更新时间Intelligent algorithm\10\s10_1\1.jpg535472014-04-26Intelligent algorithm\10\s10_1\s10_1.m87752014-04-26Intelligent algorithm\10\s10_2\1.jpg535472014-04-26Intelligent algorithm\10\s10_2\bys.m1..._rx-algorithm及其变体代码实现

Vue使用AntV/G2例子_vue2中使用antv中的水波图基础用法-程序员宅基地

文章浏览阅读780次。Vue项目中使用AntV/G2图表_vue2中使用antv中的水波图基础用法

Matlab GUI图像融合实现与优化_matlab 如何把两个图片融合-程序员宅基地

文章浏览阅读158次。图像融合是图像处理中的重要应用领域之一,其主要目的是将多幅图像信息融合为一张更加清晰、更具信息含量的图像。同时,在优化图像融合算法的过程中,Matlab工具箱已经提供了许多有用的函数和工具,帮助我们更好地进行图像处理和分析。本文介绍了基于Matlab GUI环境实现图像融合的方法,并提供了几种常用的图像融合算法。同时,在实现图像融合时,需要根据具体应用场景以及图像特征来选择和调整不同的融合方法和参数。在实现图像融合时,需要先将待融合的图像进行对齐。根据用户所选的融合方法,我们可以实现相应的图像融合算法。_matlab 如何把两个图片融合

Cache-主存地址映射_直接映射的主存地址格式-程序员宅基地

文章浏览阅读8k次,点赞27次,收藏132次。Cache-主存地址映射这几天十分懒惰,都没有复习计组,现在勉强把第四章看完了,最后一个内容Cache-主存地址映射一开始看不懂,现在终于差不多懂了,再把做题的步骤写下来供下次参考题目一假设主存容量为512K,Cache容量为4KB,每个子块为16个字,每个字32位。(1)Cache地址有多少位?可容纳多少块?题目没有说是按字访存,所以默认就是按照字节来访存。所以Cache的地址有多少位呢,我们就先看看它有多少个字节。Cache的容量是4KB,所以一共有4K个字节。所以Cache地址的位数就_直接映射的主存地址格式

超叼的一套知识要点,6位阿里大师共同编写的高可用分布式架构设计核心_robertleepeak-程序员宅基地

文章浏览阅读127次。开篇吹水从传统互联网到移动互联网再到物联网,中国乃至全球的互联网技术在近十年得到了高速发展。作为架构师,我们非常乐意把这些技术传播出去,让更多的人享受互联网技术的红利,让技术拓展商业的边界。阿里巴巴的双11技术已经越来越成熟,因为阿里巴巴已经逐步具备了基于云的计算能力,可以轻松应对各种业务压力。本书的上册《分布式服务架构:原理、设计与实战》详细介绍了如何解决线上高并发服务的一一致性、高性能、高可用、敏捷等痛点。本书延续了高可用服务架构的主题,侧重于讲解高可用架构设计的核心要点:可伸缩和可扩展,从应_robertleepeak

随便推点

大数问题——26进制_z-26进制数是一个每位都是大写字母的数字。 a、b、c、…、x、y、z 分别依次代表一-程序员宅基地

文章浏览阅读4.3k次。杭电2100LovekeyProblem Description XYZ-26进制数是一个每位都是大写字母的数字。 A、B、C、…、X、Y、Z 分别依次代表一个0 ~ 25 的数字,一个 n 位的26进制数转化成是10进制的规则如下 A0A1A2A3…An-1 的每一位代表的数字为a0a1a2a3…an-1 ,则该XYZ-26进制数的10进制值就为 m = a0 * 26^(n-1) + a_z-26进制数是一个每位都是大写字母的数字。 a、b、c、…、x、y、z 分别依次代表一

程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现)_直接插入排序34,65,12,56,78,10-程序员宅基地

文章浏览阅读129次。程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现)原创 2012年05月12日 11:18:05标签:java /数据结构 /算法50847前几天,看到一篇前辈的博文“程序员必知的8大排序”,不禁的手痒起来,重新翻开严蔚敏老师的《数据结构》复习了一遍,然后一一的用java去实现,其中有不足之处,还望各位道友指正_直接插入排序34,65,12,56,78,10

Android:Json数据转换成Map_android json to hashmap-程序员宅基地

文章浏览阅读1.6k次。本文利用Gson来做实现,先导入:implementation 'com.google.code.gson:gson:2.8.6'主要利用的是JsonObject里的entrySet()方法,相关Demo代码如下:import com.google.gson.Gson;import com.google.gson.JsonElement;import com.google.gson.JsonObject;import java.util.HashMap;import java.ut_android json to hashmap

R语言 quantmod下载股票代码无法访问Yahoo的唯一解决方法_r语言下载不了雅虎数据-程序员宅基地

文章浏览阅读394次。总结而言,当无法访问Yahoo时,使用quantmod包下载股票代码的一个可行解决方法是选择替代数据源,例如Alpha Vantage,并使用其提供的API密钥来获取数据。值得注意的是,使用Alpha Vantage作为替代数据源可能会有一些限制,例如每分钟请求的次数有限制,并且可能无法提供与Yahoo相同的数据范围和质量。getSymbols函数用于从指定的数据源获取股票数据,参数src用于指定数据源,api.key用于传递API密钥。在获得API密钥后,我们可以使用以下代码来获取股票代码。_r语言下载不了雅虎数据

Matlab函数句柄调用图像K均值分类_function varargout = classification_outputfcn(hobj-程序员宅基地

文章浏览阅读1.2k次。function varargout = guideTemp2(varargin)% GUIDETEMP2 MATLAB code for guideTemp2.fig% GUIDETEMP2, by itself, creates a new GUIDETEMP2 or raises the existing% singleton*.%% H = GUID_function varargout = classification_outputfcn(hobject, eventdata, handles)

1688API获得店铺详情_1688获得店铺详情-程序员宅基地

文章浏览阅读271次。seller_info - 获得店铺详情测试网址:http://console.open.onebound.cn/console/?i=eidiResult Object:---------------------------------------{ "user": { "nick": "yylsmould", "city": "浙江 宁波", "good_num": "", "level": "11", "user_num_id": null, "company_i_1688获得店铺详情