{"action":"created","issue":{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/24","repository_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic","labels_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/24/labels{/name}","comments_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/24/comments","events_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/24/events","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/issues/24","id":167210623,"number":24,"title":"Add a local Reduction Function","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/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%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/8","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/milestones/2009/07/27%20Chicago","labels_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/milestones/8/labels","id":1900469,"number":8,"title":"2009/07/27 Chicago","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":7,"state":"closed","created_at":"2016-07-23T22:09:07Z","updated_at":"2016-07-24T00:41:58Z","due_on":"2009-07-29T04:00:00Z","closed_at":"2016-07-23T22:09:07Z"},"comments":40,"created_at":"2016-07-24T00:36:31Z","updated_at":"2016-07-24T00:42:01Z","closed_at":null,"body":"**Originally by _traff_ on 2008-10-10 07:57:28 -0500**\n\n___\n# Add Local Reduction FunctionSep 8 2008 straw vote:\n\n|| Yes || Maybe || No for 2.2 || Abstain ||\n|| 19 || 4 || 1 || 3 ||\n\nAuthor: Torsten Hoefler on behalf of the Collectives Workgroup,\nproposal text by Jesper on behalf of group\n\n## Description\nSome libraries that implement functions including reduction operations need access to user-defined MPI operations. Also, being able to call an optimized and portable implementation of predefined MPI operations locally would be helpful. Those issues showed up during the implementation of LibNBC.\n\n## History\nThis has been missing since MPI-1. It is a flaw in the library interface of MPI (user-written libraries can't access user-defined operations).\n\nA full proposal has been added after the October 2008 meeting.\n\n## Proposed Solution\n\nAdd to text, p.173, after line 10, the following new subsection.\n\n5.9.7. Process-local reduction \n\nThe functions in this section are of importance to library implementers who may want to implement special reduction patterns that are otherwise not easily covered by the standard MPI operations. \n\nThe following function applies a reduction operator to local arguments.\n\n```\n#!c\nMPI_Reduce_local(inbuf, inoutbuf, count, datatype, op)\n IN    inbuf    - input buffer (choice)\n INOUT inoutbuf - combined input and output buffer (choice)\n IN    count    - number of elements in inbuf and inoutbuf buffers (nonnegative integer)\n IN    datatype - data type of elements of inbuf and inoutbuf buffers (handle)\n IN    op       - operation (handle)\n```\n\n\n```\n#!c\nint MPI_Reduce_local(void *inbuf, void *inoutbuf, int count, MPI_Datatype datatype, MPI_Op op)\n```\n\n```\n#!c\nMPI_REDUCE_LOCAL(INBUF, INOUTBUF, COUNT, DATATYPE, OP, IERROR)\n<type> INBUF(*), INOUTBUF(*)\nINTEGER COUNT, DATATYPE, OP, IERROR\n```\n\n```\n#!c\nvoid MPI::Op::Reduce_local(const void *inbuf, void *inoutbuf, int count, const MPI::Datatype& datatype) const\n```\n\nThe function applies the operation given by `op` element-wise to the elements of `inbuf` and `inoutbuf` with the result stored element-wise in `inoutbuf`, as explained for user-defined operations in Section 5.9.5. Both `inbuf` and `inoutbuf` (input as well as result) have the same number of elements given by `count` and the same datatype given by `datatype`. The `MPI_IN_PLACE` option is not allowed.\n\nReduction operations can be queried for their commutativity.\n\n```\n#!c\nMPI_OP_COMMUTATIVE(op, commute)\n IN    op      - operation (handle)\n OUT   commute - true if op is commutative, false otherwise (logical)\n```\n\n```\n#!c\nint MPI_Op_commutative(MPI_Op op, int *commute)\n```\n\n```\n#!c\nMPI_OP_COMMUTATIVE(OP, COMMUTE, IERROR)\nLOGICAL COMMUTE\nINTEGER OP,IERROR\n```\n\n```\n#!c\nbool MPI::Op::Is_commutative() const\n```\n\n## Implementation\n\n\n## Impact on Implementations\nmarginal/trivial\n\n## Impact on Applications / Users\nIt's only an addition, so there is no negative impact like code changes. However, libraries like [LibNBC](http://www.unixer.de/research/nbcoll/libnbc/) would be able to implement reductions easier and correct.\n\n## Alternative Solutions\n\n## Entry for the Change Log\n\nSection 5.9.7 on page 173. [[BR]]\nThe local routines MPI_REDUCE_LOCAL and MPI_OP_COMMUTATIVE have been added.\n\n"},"comment":{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/comments/234749470","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/issues/24#issuecomment-234749470","issue_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/24","id":234749470,"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-24T00:42:01Z","updated_at":"2016-07-24T00:42:01Z","body":"**Originally by _moody20_ on 2009-07-31 15:49:39 -0500**\n\n___\nI made the following edits for consistency with the rest of the document:\n```\n\"implementers\" --> \"implementors\"\n\"nonnegative\"  --> \"non-negative\"\n```\n\nOther notes:\n```\n- This ticket uses style like \"void *inbuf\" instead of \"void* inbuf\" in rest of chapter.  I left that as is, but maybe that should be adjusted, as well.\n- The C++ binding ends with \"const\", but should it be \"const = 0\" instead?\n```"}}
{"actor":{"display_login":"mpiforumbot"}}