<div dir="ltr">Pavan,<div><br></div><div>Here is a short program that reproduces the issue:</div><div><br></div><div><br></div><div><br></div><div><div>#include <mpi.h></div><div>#include <assert.h></div><div><br></div><div>int main(int argc, char** argv)</div><div>{</div><div>  MPI_Init(&argc, &argv);</div><div>  int size;</div><div>  MPI_Comm_size(MPI_COMM_WORLD, &size);</div><div>  assert(size == 2);</div><div>  int rank;</div><div>  MPI_Comm_rank(MPI_COMM_WORLD, &rank);</div><div>  MPI_Comm newcomm;</div><div>  if (rank == 0) {</div><div>    int sources[1] = {0};</div><div>    int degrees[1] = {2};</div><div>    int destinations[2] = {1,0};</div><div>    int weights[2] = {2,1};</div><div>    MPI_Dist_graph_create(MPI_COMM_WORLD, 2, sources, degrees, destinations,</div><div>        weights, MPI_INFO_NULL, 0, &newcomm);</div><div>  } else {</div><div>    int sources[1] = {1};</div><div>    int degrees[1] = {1};</div><div>    int destinations[1] = {0};</div><div>    int weights[1] = {2};</div><div>    MPI_Dist_graph_create(MPI_COMM_WORLD, 1, sources, degrees, destinations,</div><div>        weights, MPI_INFO_NULL, 0, &newcomm);</div><div>  }</div><div>  MPI_Comm_free(&newcomm);</div><div>  MPI_Finalize();</div><div>}</div></div><div><br></div><div><br></div><div><br></div><div><br></div><div>Thanks,</div><div><br></div><div>Dan</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Oct 24, 2015 at 7:21 PM, Balaji, Pavan <span dir="ltr"><<a href="mailto:balaji@anl.gov" target="_blank">balaji@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif">
<div>
<div>
<div>Daniel,</div>
<div><br>
</div>
<div>Do you have a test program that shows these errors?</div>
<div><br>
</div>
<div>The algorithms are a first cut, for now, but we are hoping to optimize them in 2016 (together with one of our vendor partners, who will be contributing code for it).</div>
<div><br>
</div>
<div>Thanks,</div>
<div><br>
</div>
<div>  -- Pavan</div>
<div>
<div></div>
</div>
</div>
</div>
<div><br>
</div>
<span>
<div style="font-family:Calibri;font-size:12pt;text-align:left;color:black;BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;PADDING-BOTTOM:0in;PADDING-LEFT:0in;PADDING-RIGHT:0in;BORDER-TOP:#b5c4df 1pt solid;BORDER-RIGHT:medium none;PADDING-TOP:3pt">
<span style="font-weight:bold">From: </span>Daniel Ibanez <<a href="mailto:dan.a.ibanez@gmail.com" target="_blank">dan.a.ibanez@gmail.com</a>><br>
<span style="font-weight:bold">Reply-To: </span>"<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>" <<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>><br>
<span style="font-weight:bold">Date: </span>Saturday, October 24, 2015 at 5:05 PM<br>
<span style="font-weight:bold">To: </span>"<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>" <<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>><br>
<span style="font-weight:bold">Subject: </span>[mpich-devel] MPI_Dist_graph_create self-edge<br>
</div><div><div class="h5">
<div><br>
</div>
<div>
<div>
<div dir="ltr">Hello,
<div><br>
</div>
<div>Using MPICH 3.1.4, I'm getting internal assertions of this kind</div>
<div>of when using MPI_Dist_graph_create :</div>
<div><br>
</div>
<div>Assertion failed in file src/mpi/topo/dist_gr_create.c at line 223: s_rank >= 0<br>
</div>
<div>Assertion failed in file src/mpi/topo/dist_gr_create.c at line 195: sources[i] < comm_size<br>
</div>
<div><br>
</div>
<div>I've checked that ranks passed in are in the proper range,</div>
<div>rather I think the issue is caused by requesting an edge</div>
<div>from rank 0 to itself.</div>
<div>(Another hint is that its non-deterministic which assertion</div>
<div>I get; it depends on the order in which the ranks get scheduled</div>
<div>by the OS, so there is a bit of a bug in the implementation,</div>
<div>or at least no check for self-edges).</div>
<div><br>
</div>
<div>Does the MPI standard allow for self-edges in these graphs ?</div>
<div><br>
</div>
<div>Thank you,</div>
<div><br>
</div>
<div>P.S. - I'll throw in a bigger question while I'm at it: are</div>
<div>MPI_Dist_graph_create and MPI_Neighbor_alltoallv</div>
<div>implemented with optimally scalable algorithms ?</div>
<div>I'm betting my scalability on them being roughly</div>
<div>O(log(P)) where P is communicator size, assuming</div>
<div>neighborhood sizes and message sizes are constant.</div>
</div>
</div>
</div>
</div></div></span>
</div>

<br>_______________________________________________<br>
To manage subscription options or unsubscribe:<br>
<a href="https://lists.mpich.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">https://lists.mpich.org/mailman/listinfo/devel</a><br></blockquote></div><br></div>