{"action":"created","issue":{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/3","repository_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic","labels_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/3/comments","events_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/3/events","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/issues/3","id":167206039,"number":3,"title":"Repeating a Neighbor in a Graph Communicator Ambiguity with MPI_GRAPH_NEIGHBOR[_COUNT]","user":{"login":"mpiforumbot","id":20617676,"avatar_url":"https://avatars.githubusercontent.com/u/20617676?v=3","gravatar_id":"","url":"https://api.github.com/users/mpiforumbot","html_url":"https://github.com/mpiforumbot","followers_url":"https://api.github.com/users/mpiforumbot/followers","following_url":"https://api.github.com/users/mpiforumbot/following{/other_user}","gists_url":"https://api.github.com/users/mpiforumbot/gists{/gist_id}","starred_url":"https://api.github.com/users/mpiforumbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpiforumbot/subscriptions","organizations_url":"https://api.github.com/users/mpiforumbot/orgs","repos_url":"https://api.github.com/users/mpiforumbot/repos","events_url":"https://api.github.com/users/mpiforumbot/events{/privacy}","received_events_url":"https://api.github.com/users/mpiforumbot/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/labels/MPI%202%5C.2","name":"MPI 2\\.2","color":"ededed"},{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/labels/Text%20committed","name":"Text committed","color":"d93f0b"},{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/labels/Text%20%5C(only%5C)%20changes","name":"Text \\(only\\) changes","color":"ededed"},{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/labels/Waiting%20for%20PDF%20reviews","name":"Waiting for PDF reviews","color":"fef2c0"}],"state":"open","locked":false,"assignee":{"login":"mpiforumbot","id":20617676,"avatar_url":"https://avatars.githubusercontent.com/u/20617676?v=3","gravatar_id":"","url":"https://api.github.com/users/mpiforumbot","html_url":"https://github.com/mpiforumbot","followers_url":"https://api.github.com/users/mpiforumbot/followers","following_url":"https://api.github.com/users/mpiforumbot/following{/other_user}","gists_url":"https://api.github.com/users/mpiforumbot/gists{/gist_id}","starred_url":"https://api.github.com/users/mpiforumbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpiforumbot/subscriptions","organizations_url":"https://api.github.com/users/mpiforumbot/orgs","repos_url":"https://api.github.com/users/mpiforumbot/repos","events_url":"https://api.github.com/users/mpiforumbot/events{/privacy}","received_events_url":"https://api.github.com/users/mpiforumbot/received_events","type":"User","site_admin":false},"assignees":[{"login":"mpiforumbot","id":20617676,"avatar_url":"https://avatars.githubusercontent.com/u/20617676?v=3","gravatar_id":"","url":"https://api.github.com/users/mpiforumbot","html_url":"https://github.com/mpiforumbot","followers_url":"https://api.github.com/users/mpiforumbot/followers","following_url":"https://api.github.com/users/mpiforumbot/following{/other_user}","gists_url":"https://api.github.com/users/mpiforumbot/gists{/gist_id}","starred_url":"https://api.github.com/users/mpiforumbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpiforumbot/subscriptions","organizations_url":"https://api.github.com/users/mpiforumbot/orgs","repos_url":"https://api.github.com/users/mpiforumbot/repos","events_url":"https://api.github.com/users/mpiforumbot/events{/privacy}","received_events_url":"https://api.github.com/users/mpiforumbot/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/milestones/7","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/milestones/2009/06/08%20California","labels_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/milestones/7/labels","id":1900468,"number":7,"title":"2009/06/08 California","description":"","creator":{"login":"mpiforumbot","id":20617676,"avatar_url":"https://avatars.githubusercontent.com/u/20617676?v=3","gravatar_id":"","url":"https://api.github.com/users/mpiforumbot","html_url":"https://github.com/mpiforumbot","followers_url":"https://api.github.com/users/mpiforumbot/followers","following_url":"https://api.github.com/users/mpiforumbot/following{/other_user}","gists_url":"https://api.github.com/users/mpiforumbot/gists{/gist_id}","starred_url":"https://api.github.com/users/mpiforumbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpiforumbot/subscriptions","organizations_url":"https://api.github.com/users/mpiforumbot/orgs","repos_url":"https://api.github.com/users/mpiforumbot/repos","events_url":"https://api.github.com/users/mpiforumbot/events{/privacy}","received_events_url":"https://api.github.com/users/mpiforumbot/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":1,"state":"closed","created_at":"2016-07-23T22:09:07Z","updated_at":"2016-07-23T22:18:57Z","due_on":"2009-06-10T04:00:00Z","closed_at":"2016-07-23T22:09:07Z"},"comments":34,"created_at":"2016-07-23T22:13:39Z","updated_at":"2016-07-23T22:19:04Z","closed_at":null,"body":"**Originally by _jsquyres_ on 2008-09-05 07:56:36 -0500**\n\n___\n## Description\n\n Sep 8 2008 Straw Vote\n\n|| Unique || Original || Abstain ||\n|| 0 || 25 || 7 ||\n\nMPI-2.1 specifically allows graph communicators to be created by listing a neighbor more than once in the node list.  This results in an ambiguity in MPI_GRAPH_NEIGHBORS and MPI_GRAPH_NEIGHBORS_COUNT: should the list/count returned refer to a **unique** list of neighbors, or the **original set of neighbors** (including duplicates) that were used to create the communicator?\n\n## History\n\nAmbiguity was accidentally introduced in MPI-2.1 (verified in July 2008 Forum meeting).\n\n## Proposed Solution\n\nPer straw vote in the September 2008 Dublin Forum meeting, it was decided to return the non-unique list (i.e., the same values that were passed to the constructor).  Specifically, remove the current description paragraph (from between MPI_GRAPH_NEIGHBORS_COUNT and MPI_GRAPH_NEIGHBORS) and add a new description paragraph (after MPI_GRAPH_NEIGHBORS) and add a new example explicitly showing the issue:\n\n - Remove \"MPI_GRAPH_NEIGHBORS_COUNT and MPI_GRAPH_NEIGHBORS provide adjacency information for a general graph topology.\" from p251:34-35\n - Add the following after p252:5\n\n  MPI_GRAPH_NEIGHBORS_COUNT and MPI_GRAPH_NEIGHBORS provide adjacency information for a general graph topology.  The returned count and array of neighbors for the queried rank will both include all neighbors and reﬂect the same edge ordering as was speciﬁed by the original call to MPI_GRAPH_CREATE. Speciﬁcally, MPI_GRAPH_NEIGHBORS_COUNT and MPI_GRAPH_NEIGHBORS will return values based on the original index and edges array passed to MPI_GRAPH_CREATE (assuming that index[-1] effectively equals zero): \n\n  • The count returned from MPI_GRAPH_NEIGHBORS_COUNT will be (index[rank] - index[rank-1]). \n\n  • The neighbors array returned from MPI_GRAPH_NEIGHBORS will be edges[index[rank-1]] through edges[index[rank]-1]. \n\n - Add a new example showing the issue (see the tex below, or the attached PDF).\n\nHere's the tex changes:\n\n```\n#!diff\nIndex: chap-topol/topol.tex\n===================================================================\n--- chap-topol/topol.tex\t(revision 185)\n+++ chap-topol/topol.tex\t(working copy)\n@@ -657,11 +657,6 @@\n \\mpicppemptybind{MPI::Graphcomm::Get\\_neighbors\\_count(int~rank) const}{int}\n \\mpiiidotiMergeFromTWOdotZEROend%      MPI-2.1\n \n-\\func{MPI\\_GRAPH\\_NEIGHBORS\\_COUNT} and \\func{MPI\\_GRAPH\\_NEIGHBORS} provide\n-\\mpiiidotiMergeNEWforSINGLEbegin% MPI-2.1 round-two - removed ,\n-adjacency information for a general graph topology.\n-\\mpiiidotiMergeNEWforSINGLEendI% MPI-2.1 round-two\n-\n \\begin{funcdef}{MPI\\_GRAPH\\_NEIGHBORS(comm, rank, maxneighbors, neighbors)}\n \\funcarg{\\IN}{ comm}{ communicator with graph topology (handle)}\n \\funcarg{\\IN}{ rank}{ rank of process in group of \\mpiarg{comm} (integer)}\n@@ -676,6 +671,84 @@\n \\mpicppemptybind{MPI::Graphcomm::Get\\_neighbors(int~rank, int~maxneighbors, int neighbors[]) const}{void}\n \\mpiiidotiMergeFromTWOdotZEROend%      MPI-2.1\n \n+\\func{MPI\\_GRAPH\\_NEIGHBORS\\_COUNT} and \\func{MPI\\_GRAPH\\_NEIGHBORS} provide \n+\\mpiiidotiMergeNEWforSINGLEbegin% MPI-2.1 round-two - removed , \n+adjacency information for a general graph topology. \n+\\mpiiidotiMergeNEWforSINGLEendI% MPI-2.1 round-two \n+%\n+The returned count and array of neighbors for the queried rank will\n+both include {\\em all} neighbors and reflect the same edge ordering as\n+was specified by the original call to \\func{MPI\\_GRAPH\\_CREATE}.\n+%\n+Specifically, \\func{MPI\\_GRAPH\\_NEIGHBORS\\_COUNT} and\n+\\func{MPI\\_GRAPH\\_NEIGHBORS} will return values based on the original\n+{\\tt index} and {\\tt edges} array passed to \\func{MPI\\_GRAPH\\_CREATE}\n+(assuming that {\\tt index[-1]} effectively equals zero):\n+\n+\\begin{itemize}\n+\\item The {\\tt count} returned from\n+  \\func{MPI\\_GRAPH\\_NEIGHBORS\\_COUNT} will be ({\\tt index[rank]} -\n+  {\\tt index[rank-1]}).\n+\\item The {\\tt neighbors} array returned from\n+  \\func{MPI\\_GRAPH\\_NEIGHBORS} will be {\\tt edges[index[rank-1]]}\n+  through {\\tt edges[index[rank]-1]}.\n+\\end{itemize}\n+\n+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n+\n+\\begin{example} {\\rm\n+\\label{topol-graph-neighbors-count}\n+\\exindex{MPI\\_GRAPH\\_NEIGHBORS\\_COUNT}\n+\\exindex{MPI\\_GRAPH\\_NEIGHBORS}\n+\\exindex{MPI\\_GRAPH\\_CREATE}\n+\n+Assume there are four processes 0, 1, 2, 3 with the following\n+adjacency matrix (note that some neighbors are listed multiple times):\n+\\\\[2.0ex]\n+%\n+\\hspace*{\\parindent}\n+\\begin{tabular}{|c|l|}\n+\\hline\n+process & neighbors \\\\\n+\\hline\n+0       & 1, 1, 3   \\\\\n+1       & 0, 0      \\\\\n+2       & 3         \\\\\n+3       & 0, 2, 2   \\\\\n+\\hline\n+\\end{tabular}\n+\\vspace*{2.0ex}\n+\n+Thus, the input arguments to \\func{MPI\\_GRAPH\\_CREATE} are: \\\\[2.0ex]\n+%\n+\\hspace*{\\parindent}\n+\\begin{tabular}{ll}\n+nnodes = & 4 \\\\\n+index = & 3, 5, 6, 9 \\\\\n+edges = & 1, 1, 3, 0, 0, 3, 0, 2, 2\n+\\end{tabular}\n+\\vspace*{2.0ex}\n+\n+Therefore, calling \\func{MPI\\_GRAPH\\_NEIGHBORS\\_COUNT} and\n+\\func{MPI\\_GRAPH\\_NEIGHBORS} for each of the 4 processes will return: \\\\[2.0ex]\n+%\n+\\hspace*{\\parindent}\n+\\begin{tabular}{ccl}\n+\\multicolumn{1}{c}{\\bf Input rank} & \\multicolumn{1}{c}{\\bf Count} &\n+\\multicolumn{1}{c}{\\bf Neighbors} \\\\\n+\\hline\n+0 & 3 & 1, 1, 3 \\\\\n+1 & 2 & 0, 0 \\\\\n+2 & 1 & 3 \\\\\n+3 & 3 & 0, 2, 2 \\\\\n+\\hline\n+\\end{tabular}\n+\\vspace*{2.0ex}\n+\n+} \\end{example}\n+\n+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n+\n \\begin{example} { \\rm\n \\label{topol-exC}\n \\exindex{MPI\\_GRAPH\\_CREATE}\n```\n\n## Impact on Implementations\n\nImplementations will need to ensure that they save the extra information (i.e., nodes listed multiple times) so that they can be counted / returned later.\n\n## Impact on Applications / Users\n\nApplications will need to ensure to handle the non-unique list that is returned.\n\n## Alternative Solutions\n\nForum decided that there shouldn't be an alternate solution -- all implementations should do the same thing.\n\n## Entry for the Change Log\n\nSection 7.5.4 on page 248.  Remove ambiguity regarding duplicated neighbors with MPI_GRAPH_NEIGHBORS and MPI_GRAPH_NEIGHBORS_COUNT."},"comment":{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/comments/234743785","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/issues/3#issuecomment-234743785","issue_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/3","id":234743785,"user":{"login":"mpiforumbot","id":20617676,"avatar_url":"https://avatars.githubusercontent.com/u/20617676?v=3","gravatar_id":"","url":"https://api.github.com/users/mpiforumbot","html_url":"https://github.com/mpiforumbot","followers_url":"https://api.github.com/users/mpiforumbot/followers","following_url":"https://api.github.com/users/mpiforumbot/following{/other_user}","gists_url":"https://api.github.com/users/mpiforumbot/gists{/gist_id}","starred_url":"https://api.github.com/users/mpiforumbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpiforumbot/subscriptions","organizations_url":"https://api.github.com/users/mpiforumbot/orgs","repos_url":"https://api.github.com/users/mpiforumbot/repos","events_url":"https://api.github.com/users/mpiforumbot/events{/privacy}","received_events_url":"https://api.github.com/users/mpiforumbot/received_events","type":"User","site_admin":false},"created_at":"2016-07-23T22:19:04Z","updated_at":"2016-07-23T22:19:04Z","body":"**Originally by _htor_ on 2009-07-17 13:20:20 -0500**\n\n___\nReviewed: OK"}}
{"actor":{"display_login":"mpiforumbot"}}