<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Many ranks MPI_Isend to one rank in Intel® MPI Library</title>
    <link>https://community.intel.com/t5/Intel-MPI-Library/Many-ranks-MPI-Isend-to-one-rank/m-p/941328#M2735</link>
    <description>&lt;P&gt;So.. the code above is something I think it should've worked but it's bugging (by bugging i mean that rank 0 is expecting the messages&lt;/P&gt;

&lt;P&gt;and the other ranks are waiting for them to be received but that never happens).&lt;/P&gt;

&lt;P&gt;What I tried to do was something like this:&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;
if(rank == 0){
	for (a = 0; a &amp;lt; 100; a++){
		MPI_Recv(&amp;amp;buff, 1, MPI_INT, MPI_ANY_SOURCE, a+100; MPI_COMM_WORLD, &amp;amp;status);
		MPI_Recv(&amp;amp;buff2, 1, MPI_INT, MPI_ANY_SOURCE, a+100; MPI_COMM_WORLD, &amp;amp;status);
		MPI_Recv(&amp;amp;buff3, 1, MPI_INT, MPI_ANY_SOURCE, a+100; MPI_COMM_WORLD, &amp;amp;status);
	}
}else{

	// Receive id that goes from 0 to 99. line 2.
	MPI_Recv(&amp;amp;id, 1, MPI_INT, 1, RECEIVEID, MPI_COMM_WORLD, &amp;amp;status);

	MPI_Request requestNull;

	MPI_Isend(&amp;amp;buff4, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;requestNull);
	MPI_Isend(&amp;amp;buff5, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;requestNull);
	MPI_Isend(&amp;amp;buff6, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;requestNull);
}&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I already did something like this as well and it didn't work..&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;
MPI_Request request[3];
MPI_Status status[3];

MPI_Isend(&amp;amp;buff4, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;request[0]]);
MPI_Isend(&amp;amp;buff5, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;request[1]);
MPI_Isend(&amp;amp;buff6, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;request[2]);

MPI_Waitall(3, request, status);&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;So.. any help?&lt;/P&gt;

&lt;P&gt;Thanks in advance!&lt;/P&gt;</description>
    <pubDate>Sat, 08 Mar 2014 06:05:36 GMT</pubDate>
    <dc:creator>Carlos_Alexandre_T_</dc:creator>
    <dc:date>2014-03-08T06:05:36Z</dc:date>
    <item>
      <title>Many ranks MPI_Isend to one rank</title>
      <link>https://community.intel.com/t5/Intel-MPI-Library/Many-ranks-MPI-Isend-to-one-rank/m-p/941328#M2735</link>
      <description>&lt;P&gt;So.. the code above is something I think it should've worked but it's bugging (by bugging i mean that rank 0 is expecting the messages&lt;/P&gt;

&lt;P&gt;and the other ranks are waiting for them to be received but that never happens).&lt;/P&gt;

&lt;P&gt;What I tried to do was something like this:&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;
if(rank == 0){
	for (a = 0; a &amp;lt; 100; a++){
		MPI_Recv(&amp;amp;buff, 1, MPI_INT, MPI_ANY_SOURCE, a+100; MPI_COMM_WORLD, &amp;amp;status);
		MPI_Recv(&amp;amp;buff2, 1, MPI_INT, MPI_ANY_SOURCE, a+100; MPI_COMM_WORLD, &amp;amp;status);
		MPI_Recv(&amp;amp;buff3, 1, MPI_INT, MPI_ANY_SOURCE, a+100; MPI_COMM_WORLD, &amp;amp;status);
	}
}else{

	// Receive id that goes from 0 to 99. line 2.
	MPI_Recv(&amp;amp;id, 1, MPI_INT, 1, RECEIVEID, MPI_COMM_WORLD, &amp;amp;status);

	MPI_Request requestNull;

	MPI_Isend(&amp;amp;buff4, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;requestNull);
	MPI_Isend(&amp;amp;buff5, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;requestNull);
	MPI_Isend(&amp;amp;buff6, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;requestNull);
}&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I already did something like this as well and it didn't work..&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;
MPI_Request request[3];
MPI_Status status[3];

MPI_Isend(&amp;amp;buff4, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;request[0]]);
MPI_Isend(&amp;amp;buff5, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;request[1]);
MPI_Isend(&amp;amp;buff6, 1, MPI_INT, 0, id+100, MPI_COMM_WORLD, &amp;amp;request[2]);

MPI_Waitall(3, request, status);&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;So.. any help?&lt;/P&gt;

&lt;P&gt;Thanks in advance!&lt;/P&gt;</description>
      <pubDate>Sat, 08 Mar 2014 06:05:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-MPI-Library/Many-ranks-MPI-Isend-to-one-rank/m-p/941328#M2735</guid>
      <dc:creator>Carlos_Alexandre_T_</dc:creator>
      <dc:date>2014-03-08T06:05:36Z</dc:date>
    </item>
    <item>
      <title>You are doing blocking</title>
      <link>https://community.intel.com/t5/Intel-MPI-Library/Many-ranks-MPI-Isend-to-one-rank/m-p/941329#M2736</link>
      <description>&lt;P&gt;You are doing blocking receives on all nodes. SO unless they receive something the next instruction won't proceed.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Mar 2014 10:06:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-MPI-Library/Many-ranks-MPI-Isend-to-one-rank/m-p/941329#M2736</guid>
      <dc:creator>Santak_D_</dc:creator>
      <dc:date>2014-03-20T10:06:28Z</dc:date>
    </item>
  </channel>
</rss>

