{"action":"created","issue":{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/38","repository_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic","labels_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/38/labels{/name}","comments_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/38/comments","events_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/38/events","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/issues/38","id":167212779,"number":38,"title":"Matched probe/receive","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%203%5C.0","name":"MPI 3\\.0","color":"ededed"},{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/labels/New%20routine%5C(s%5C)","name":"New routine\\(s\\)","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/Waiting%20for%20proposal%20reviews","name":"Waiting for proposal reviews","color":"f9d0c4"}],"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/16","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/milestones/2010/10/11%20Chicago,%20USA","labels_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/milestones/16/labels","id":1900477,"number":16,"title":"2010/10/11 Chicago, USA","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":0,"state":"closed","created_at":"2016-07-23T22:09:09Z","updated_at":"2016-07-24T02:10:08Z","due_on":"2010-10-14T04:00:00Z","closed_at":"2016-07-23T22:09:09Z"},"comments":54,"created_at":"2016-07-24T02:04:49Z","updated_at":"2016-07-24T02:15:23Z","closed_at":null,"body":"**Originally by _htor_ on 2008-10-14 08:54:38 -0500**\n\n___\nSep 8 2008 straw vote:\n\n|| Yes || Maybe || No for 2.2 || Abstain ||\n|| 7 || 13 || 2 || 10 ||\n\nAuthor: Douglas Gregor, Torsten Hoefler\n\n## Description\n\nIn its current form, MPI's probe is unusable in multi-threaded MPI applications because probing for a message does not imply that a subsequent receive operation will actually receive that message. This causes problems for higher-level language bindings to MPI (C#, C++, Python, etc.) where one might need to transmit serialized data, irregular applications where the amount of data received is not always known, and applications attempting to use probe in a multi-threaded context to receive messages. \n\nCompelling examples are the problems that were faced to implement .NET bindings for MPI. See D. Gregor: \"Design and implementation of a high-performance MPI for C# and the common language infrastructure\" (http://portal.acm.org/citation.cfm?id=1345228) for details. Furthermore, the often-used Boost.MPI (http://www.boost.org/doc/libs/1_37_0/doc/html/mpi.html) is not fully thread safe due to the stated problems. \n\nIf the forum decides to not support/standardize all language bindings (or even drop C++ because Boost.MPI handles it much more intuitively for C++ programmers), then the forum needs to ensure that language bindings can be implemented on top of MPI. This is not possible right now. Thus, we consider this issue as a bug in MPI 2.2 which needs to be fixed.\n\n## History\n\nThis particular issue (and proposal) has been discussed several times at the MPI Forum and has gone through several revisions.\n\n## Proposed Solution\n\nIntroduce a new kind of probe, a \"matched\" probe, that matches an incoming message and returns a handle to that message. Since the message is already matched, it cannot be found by another probe or receive operation. The only way to receive a message is to call one of the new \"matched\" receive operations, providing it with the message handle returned from the matched probe. For complete details, **see the attached proposal pdf**.\n\nConstants that affect other places in the document are:\n - add MPI_Message to \"C handles to assorted structures\" on page 524 (MPI-2.2)\n - add MPI_MESSAGE_NULL to \"Null Handles\" on page 519 (MPI-2.2)\n - add MPI_PROBE, MPI_IPROBE, MPI_MRECV, MPI_IMRECV to A.2 and A.3\n - add references to MPI_PROBE, MPI_IPROBE, MPI_MRECV, MPI_IMRECV to \"MPI Function Index\" (page 618 in MPI-2.2)\n\n\n## Impact on Implementations\n\nImplementations with unexpected queue search exposed in the MPI library will have little difficulty with the implementation of this proposal.  A prototype implemented in Open MPI took under a week and likely could be considered production ready.  The Mprobe follows the same code path through the implementation as a normal probe, but removes the message fragment from the unexpected queue on match and stashes it in the MPI_Message handle.  The MPI_MRecv then restarts the fragment through the progress engine, as a matched fragment would be started during MPI_Recv on an unexpected message.  There is one extra if statement in the probe matching path of Open MPI, which is negligible when compared to walking the unexpected queue.\n\nImplementations over libraries such as PSM and MX, which hide the unexpected queue in the lower library, are more problematic.  They will require exposing a similar semantic to the mprobe/mrecv in their API.\n\n## Impact on Applications / Users\n\nThis is a pure extension that makes it far easier to receive data of unknown length, which will greatly simplify MPI bindings in higher-level languages and aid multi-threaded MPI applications.\n\n## Alternative Solutions\nSee ticket #39. However, this seemed to be a very contentious topic in the last meeting, thus, we still recommend to fix the bug in the standard to enable threaded libraries that use MPI_Probe(). \n\n## Entry for the Change Log"},"comment":{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/comments/234752571","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/issues/38#issuecomment-234752571","issue_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/38","id":234752571,"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-24T02:15:23Z","updated_at":"2016-07-24T02:15:23Z","body":"**Originally by _goodell_ on 2010-10-21 17:51:30 -0500**\n\n___\nReviewed, OK."}}
{"actor":{"display_login":"mpiforumbot"}}