{"action":"created","issue":{"url":"https://api.github.com/repos/wesbland/mpi-forum-historic/issues/66","repository_url":"https://api.github.com/repos/wesbland/mpi-forum-historic","labels_url":"https://api.github.com/repos/wesbland/mpi-forum-historic/issues/66/labels{/name}","comments_url":"https://api.github.com/repos/wesbland/mpi-forum-historic/issues/66/comments","events_url":"https://api.github.com/repos/wesbland/mpi-forum-historic/issues/66/events","html_url":"https://github.com/wesbland/mpi-forum-historic/issues/66","id":166689548,"number":66,"title":"Extending MPI_COMM_CREATE to create several disjoint sub-communicators from an intracommunicator","user":{"login":"wesbland","id":1561207,"avatar_url":"https://avatars.githubusercontent.com/u/1561207?v=3","gravatar_id":"","url":"https://api.github.com/users/wesbland","html_url":"https://github.com/wesbland","followers_url":"https://api.github.com/users/wesbland/followers","following_url":"https://api.github.com/users/wesbland/following{/other_user}","gists_url":"https://api.github.com/users/wesbland/gists{/gist_id}","starred_url":"https://api.github.com/users/wesbland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wesbland/subscriptions","organizations_url":"https://api.github.com/users/wesbland/orgs","repos_url":"https://api.github.com/users/wesbland/repos","events_url":"https://api.github.com/users/wesbland/events{/privacy}","received_events_url":"https://api.github.com/users/wesbland/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"wesbland","id":1561207,"avatar_url":"https://avatars.githubusercontent.com/u/1561207?v=3","gravatar_id":"","url":"https://api.github.com/users/wesbland","html_url":"https://github.com/wesbland","followers_url":"https://api.github.com/users/wesbland/followers","following_url":"https://api.github.com/users/wesbland/following{/other_user}","gists_url":"https://api.github.com/users/wesbland/gists{/gist_id}","starred_url":"https://api.github.com/users/wesbland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wesbland/subscriptions","organizations_url":"https://api.github.com/users/wesbland/orgs","repos_url":"https://api.github.com/users/wesbland/repos","events_url":"https://api.github.com/users/wesbland/events{/privacy}","received_events_url":"https://api.github.com/users/wesbland/received_events","type":"User","site_admin":false},"assignees":[{"login":"wesbland","id":1561207,"avatar_url":"https://avatars.githubusercontent.com/u/1561207?v=3","gravatar_id":"","url":"https://api.github.com/users/wesbland","html_url":"https://github.com/wesbland","followers_url":"https://api.github.com/users/wesbland/followers","following_url":"https://api.github.com/users/wesbland/following{/other_user}","gists_url":"https://api.github.com/users/wesbland/gists{/gist_id}","starred_url":"https://api.github.com/users/wesbland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wesbland/subscriptions","organizations_url":"https://api.github.com/users/wesbland/orgs","repos_url":"https://api.github.com/users/wesbland/repos","events_url":"https://api.github.com/users/wesbland/events{/privacy}","received_events_url":"https://api.github.com/users/wesbland/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/wesbland/mpi-forum-historic/milestones/8","html_url":"https://github.com/wesbland/mpi-forum-historic/milestones/2009/07/27%20Chicago","labels_url":"https://api.github.com/repos/wesbland/mpi-forum-historic/milestones/8/labels","id":1894748,"number":8,"title":"2009/07/27 Chicago","description":"","creator":{"login":"wesbland","id":1561207,"avatar_url":"https://avatars.githubusercontent.com/u/1561207?v=3","gravatar_id":"","url":"https://api.github.com/users/wesbland","html_url":"https://github.com/wesbland","followers_url":"https://api.github.com/users/wesbland/followers","following_url":"https://api.github.com/users/wesbland/following{/other_user}","gists_url":"https://api.github.com/users/wesbland/gists{/gist_id}","starred_url":"https://api.github.com/users/wesbland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wesbland/subscriptions","organizations_url":"https://api.github.com/users/wesbland/orgs","repos_url":"https://api.github.com/users/wesbland/repos","events_url":"https://api.github.com/users/wesbland/events{/privacy}","received_events_url":"https://api.github.com/users/wesbland/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":10,"state":"closed","created_at":"2016-07-20T18:12:55Z","updated_at":"2016-07-20T21:44:08Z","due_on":"2009-07-29T04:00:00Z","closed_at":"2016-07-20T18:12:55Z"},"comments":27,"created_at":"2016-07-20T21:44:04Z","updated_at":"2016-07-20T21:44:50Z","closed_at":null,"body":"**Originally by _RolfRabenseifner_ on 2008-12-13 07:26:16 -0600**\n\n___\n## Description\n\nIf an application wants to create a set of disjoint subcommunicators \nof a general intracommunicator and each subgroup is well known by all \nmembers of the subgroup then there are two possibilities:\n\n - Calling MPI_COMM_CREATE in a loop over the set of all subgroups.\n [[BR]]\n Disadvantage: This solution is not scalable in the number of subgroups.\n\n - Calculating a unique number for each subgroup and calling\n   MPI_COMM_SPLIT with color := this unique subgroup number.\n [[BR]]\n Disadvantage: The fully available group information is hidden \n to the MPI library. The MPI library must recalculate the subgroups\n based on the color information.\n (The unique group number may be already existing in most \n applications.)\n\n## History\n\nThe existing lack of scalability was detected at a real application \nat University of Stuttgart by Martin Bernreuther and Dominik Rössler.\nRainer Keller detected that the extended bahavior is already implemented in OpenMPI.\n\nDec 15 2008, Straw Vote on whether the MPI Forum wants this\nscaling extension to MPI_COMM_CREATE\n\n|| Yes || No || Abstain ||\n|| 30  ||  0 ||       0 ||\n\n## Proposed Solution\n\nSubstitute 196:25-30\n\n If comm is an intra-communicator, this function creates a new\n communicator newcomm with communication group defined by group\n and a new context. No cached information propagates from comm\n to newcomm. The function returns MPI_COMM_NULL to processes\n that are not in group.\n The call is erroneous if not all group arguments have the \n same value, or if group is not a subset of the group\n associated with comm. Note that the call is to be executed\n by all processes in comm, even if they do not belong to\n the new group.\n\nby\n\n If comm is an intracommunicator, this function creates a set\n of disjoint intracommunicators with \n communication groups defined by the group arguments.\n No cached information propagates from comm to the new \n communicators. All processes must call with group arguments\n that are subgroups of the communication group of comm;\n this could be MPI_GROUP_EMPTY. If a process calls with a\n non-empty group argument, then all processes in that group must\n call the function with the same group argument, i.e., same group \n members and group order. On these\n processes, a communicator with this group as communication group\n is returned and with the ranks identical to the ranks in its\n group. \n If a process calls the function with MPI_GROUP_EMPTY or a group\n of which it is not a member, MPI_COMM_NULL is returned.\n Note that the call to MPI_COMM_CREATE\n must always be executed by all processes in the communication\n group of comm, \n even by processes not belonging to a group provided in the call.\n\nSubstitute 197:1-3\n\n Advice to implementors. Since all processes calling MPI_COMM_DUP\n or MPI_COMM_CREATE provide the same group argument, it is\n theoretically possible to agree on a group-wide unique \n context with no communication. \n\nby \n\n Advice to implementors. Since all processes calling either \n MPI_COMM_DUP or MPI_COMM_CREATE provide either the same or \n disjoint subgroups, it is\n theoretically possible to agree on a group-wide unique \n context with no communication. \n\nSubstitute 199:1-4 \n\n A call to MPI_COMM_CREATE(comm, group, newcomm) is equivalent\n to a call to MPI_COMM_SPLIT(comm, color, key, newcomm), where\n all members of group provide color # 0 and keyrank in group,\n and all processes that are not members of group provide\n color = MPI_UNDEFINED.\n\nby\n\n A call to MPI_COMM_CREATE(comm, group, newcomm) with an\n intracommunicator comm is equivalent\n to a call to MPI_COMM_SPLIT(comm, color, key, newcomm), where\n all members of a group provide color = number of the group\n (based on a unique numbering of all disjoint groups)\n and key = rank in group,\n and all processes that are not members of a group provide\n color = MPI_UNDEFINED.\n \nAt the end of 199:12, the following text is added:\n \n MPI_COMM_SPLIT is more powerful than MPI_COMM_CREATE because each \n process in the former call needs only to know to which subgroup \n (identified by one color value) it will eventually belong, and not \n the identities of the other processes that will belong to this \n subgroup.\n\nAfter 199:36, the following advice is added:\n\n -Advice to users.*\n MPI_COMM_SPLIT is more powerful than MPI_COMM_CREATE, \n because it can create a set of disjoint\n intercommunicators and not only a single one.\n -(End of advice to users.)*\n\n## Impact on Implementations\n\nSome implementations may have already implemented this extension.\nAt least the must check  the implementation with the new interface definition.\n\n## Impact on Applications / Users\n\nNone to existing applications.\n\n## Alternative Solutions\n\n## Entry for the Change Log\n\nSection 6.4.2 on page 194.[[BR]]\nMPI_COMM_CREATE is extended to allow several disjoint subgroups \nas input if comm is an intracommunicator."},"comment":{"url":"https://api.github.com/repos/wesbland/mpi-forum-historic/issues/comments/234093261","html_url":"https://github.com/wesbland/mpi-forum-historic/issues/66#issuecomment-234093261","issue_url":"https://api.github.com/repos/wesbland/mpi-forum-historic/issues/66","id":234093261,"user":{"login":"wesbland","id":1561207,"avatar_url":"https://avatars.githubusercontent.com/u/1561207?v=3","gravatar_id":"","url":"https://api.github.com/users/wesbland","html_url":"https://github.com/wesbland","followers_url":"https://api.github.com/users/wesbland/followers","following_url":"https://api.github.com/users/wesbland/following{/other_user}","gists_url":"https://api.github.com/users/wesbland/gists{/gist_id}","starred_url":"https://api.github.com/users/wesbland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wesbland/subscriptions","organizations_url":"https://api.github.com/users/wesbland/orgs","repos_url":"https://api.github.com/users/wesbland/repos","events_url":"https://api.github.com/users/wesbland/events{/privacy}","received_events_url":"https://api.github.com/users/wesbland/received_events","type":"User","site_admin":false},"created_at":"2016-07-20T21:44:50Z","updated_at":"2016-07-20T21:44:50Z","body":"**Originally by _moody20_ on 2009-02-05 19:11:01 -0600**\n\n___\nThe word \"powerful\" is strange here, but maybe it's ok.  At any rate, I'd emphasize this advice is from intercommunicators only by moving that clause first.\n\nChange\n\n\"Advice to users. MPI_COMM_SPLIT is more powerful than MPI_COMM_CREATE, because it can create a set of disjoint intercommunicators and not only a single one. (End of advice to users.)\"\n\nto\n\n\"Advice to users. For intercommunicators, MPI_COMM_SPLIT is more general than MPI_COMM_CREATE.  A single call to MPI_COMM_SPLIT can create a set of disjoint intercommunicators, while a call to MPI_COMM_CREATE creates only one. (End of advice to users.)\"\n"}}
{"actor":{"display_login":"wesbland"}}