<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="Section1">
<p class="MsoNormal">I am having problems in one my project related to MPI development. I am working on the implementation of an RNA parsing algorithm using MPI in which I started the parsing of an input string based on some parsing rules and parsing table
 (contains different states and related actions) with a master node. In parsing table, there are multiple actions for each state which can be done in parallel. So, I have to distribute these actions among different processes. To do that, I am sending the current
 state and parsing info (current stack of parsing) to the nodes using separate thread to receive actions from other nodes while the main thread is busy in parsing based on received actions. Following are the code snippets of the sender and receiver:<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in">Sender Code:<o:p></o:p></p>
</div>
<p class="MsoNormal"><span style="font-size:9.0pt">StackFlush(&amp;snd_stack);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">StackPush(&amp;snd_stack, state_index);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">StackPush(&amp;snd_stack, current_ch);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">StackPush(&amp;snd_stack, actions_to_skip);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">elements_in_stack = stack.top &#43; 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">for(int a=elements_in_stack-1;a&gt;=0;a--)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StackPush(&amp;snd_stack, stack.contents[a]);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">StackPush(&amp;snd_stack, elements_in_stack);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">elements_in_stack = parse_tree.top &#43; 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">for(int a=elements_in_stack-1;a&gt;=0;a--)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StackPush(&amp;snd_stack, parse_tree.contents[a]);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">StackPush(&amp;snd_stack, elements_in_stack);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">elements_in_stack = snd_stack.top&#43;1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">MPI_Send(&amp;elements_in_stack, 1, MPI_INT, (myrank &#43; actions_to_skip) % mysize, MSG_ACTION_STACK_COUNT, MPI_COMM_WORLD);<o:p></o:p></span></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in"><span style="font-size:9.0pt">MPI_Send(&amp;snd_stack.contents[0], elements_in_stack, MPI_CHAR, (myrank &#43; actions_to_skip) % mysize, MSG_ACTION_STACK, MPI_COMM_WORLD);<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in">Receiver Code:<o:p></o:p></p>
</div>
<p class="MsoNormal"><span style="font-size:9.0pt">MPI_Recv(&amp;e_count, 1, MPI_INT, MPI_ANY_SOURCE, MSG_ACTION_STACK_COUNT, MPI_COMM_WORLD, &amp;status);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">if(e_count == 0){<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">while((bt_stack.top &#43; e_count) &gt;= bt_stack.maxSize - 1){usleep(500);}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">pthread_mutex_lock(&amp;mutex_bt_stack); //using mutex for accessing shared data among threads<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">MPI_Recv(&amp;bt_stack.contents[bt_stack.top &#43; 1], e_count, MPI_CHAR, status.MPI_SOURCE, MSG_ACTION_STACK, MPI_COMM_WORLD, &amp;status);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt">bt_stack.top &#43;= e_count;<o:p></o:p></span></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in"><span style="font-size:9.0pt">pthread_mutex_unlock(&amp;mutex_bt_stack);<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in">The program is running fine for small input having less communications but as we increase the input size which in response increases the communication so the receiver receives many requests while processing
 few then it get crashed with the following errors:<o:p></o:p></p>
</div>
<p class="MsoNormal">Fatal error in MPI_Recv: Message truncated, error stack:<o:p></o:p></p>
<p class="MsoNormal">MPI_Recv(186) &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;: MPI_Recv(buf=0x5b8d7b1, count=19, MPI_CHAR, src=3, tag=1, MPI_COMM_WORLD, status=0x41732100) failed<o:p></o:p></p>
<p class="MsoNormal">MPIDI_CH3U_Request_unpack_uebuf(625)L Message truncated; 21 bytes received but buffer size is 19<o:p></o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in">Rank 0 in job 73 hpc081_56549 caused collective abort of all ranks exit status of rank 0: killed by signal 9.<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">I have also tried this by using Non-Blocking MPI calls but still the similar errors.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Ayaz ul Hassan Khan<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Lecturer-B (PhD Student), Information and Computer Sciences<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">King Fahd University of Petroleum &amp; Minerals<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Dhahran 31261, Kingdom of Saudi Arabia<o:p></o:p></span></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<body lang=EN-US link=blue vlink=purple>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>
<p class=MsoNormal><font size=2 color="#0a882b" face=Calibri><span
style='font-size:11.0pt;color:#0A882B'><o:p>&nbsp;</o:p></span></font></p>
<p class=MsoNormal><font size=2 color="#0a882b" face=Calibri><span
style='font-size:11.0pt;color:#0A882B'><img width=36 height=37
id="Picture_x005f_x005f_x005f_x0020_1" src="http://www2.kfupm.edu.sa/greenkfupm/images/greenkfupm.jpg"
alt=GreenKFUPM border=0>&nbsp; </span></font><b><font color="#0a882b"
face=Arial><span style='font-family:Arial;color:#0A882B;font-weight:bold'>Save a tree. Don't print this e-mail unless it's really necessary</span></font></b><font color="#0a882b"><span style='color:
#0A882B'><o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Calibri><span style='font-size:11.0pt'>&nbsp;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Calibri><span style='font-size:11.0pt'><o:p>&nbsp;</o:p></span></font></p>
</body>
</body>
</html>