{"action":"created","comment":{"url":"https://api.github.com/repos/dealii/dealii/pulls/comments/224270133","pull_request_review_id":163596212,"id":224270133,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyNDI3MDEzMw==","diff_hunk":"@@ -371,14 +379,35 @@ namespace Utilities\n      * array is the minimum over the i-th entries of the input arrays from each\n      * processor.\n      *\n+     * This function can also be used for ArrayView objects initialized with\n+     * data living in CUDA memory if MemorySpace::CUDA is chosen.\n+     *\n      * Input and output arrays may be the same.\n      */\n-    template <typename T>\n+    template <typename T, typename MemorySpaceType = dealii::MemorySpace::Host>\n     void\n     min(const ArrayView<const T> &values,\n         const MPI_Comm &          mpi_communicator,\n         const ArrayView<T> &      minima);\n \n+    template <typename T, typename MemorySpaceType = dealii::MemorySpace::Host>\n+    void\n+    Isend(const ArrayView<const T> &values,\n+          MPI_Datatype              datatype,","path":"include/deal.II/base/mpi.h","position":63,"original_position":63,"commit_id":"6ed38e647793f3fb8f71582e467bf25ceab80469","original_commit_id":"6ed38e647793f3fb8f71582e467bf25ceab80469","user":{"login":"bangerth","id":7504421,"node_id":"MDQ6VXNlcjc1MDQ0MjE=","avatar_url":"https://avatars2.githubusercontent.com/u/7504421?v=4","gravatar_id":"","url":"https://api.github.com/users/bangerth","html_url":"https://github.com/bangerth","followers_url":"https://api.github.com/users/bangerth/followers","following_url":"https://api.github.com/users/bangerth/following{/other_user}","gists_url":"https://api.github.com/users/bangerth/gists{/gist_id}","starred_url":"https://api.github.com/users/bangerth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bangerth/subscriptions","organizations_url":"https://api.github.com/users/bangerth/orgs","repos_url":"https://api.github.com/users/bangerth/repos","events_url":"https://api.github.com/users/bangerth/events{/privacy}","received_events_url":"https://api.github.com/users/bangerth/received_events","type":"User","site_admin":false},"body":"Can't you infer the data type from `T`? If that were possible, I think we ought to use this function everywhere because it would finally give us something more generic :-)  (But that would be for a separate patch.)","created_at":"2018-10-10T23:09:30Z","updated_at":"2018-10-10T23:13:01Z","html_url":"https://github.com/dealii/dealii/pull/7303#discussion_r224270133","pull_request_url":"https://api.github.com/repos/dealii/dealii/pulls/7303","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/dealii/dealii/pulls/comments/224270133"},"html":{"href":"https://github.com/dealii/dealii/pull/7303#discussion_r224270133"},"pull_request":{"href":"https://api.github.com/repos/dealii/dealii/pulls/7303"}}},"pull_request":{"url":"https://api.github.com/repos/dealii/dealii/pulls/7303","id":221235186,"node_id":"MDExOlB1bGxSZXF1ZXN0MjIxMjM1MTg2","html_url":"https://github.com/dealii/dealii/pull/7303","diff_url":"https://github.com/dealii/dealii/pull/7303.diff","patch_url":"https://github.com/dealii/dealii/pull/7303.patch","issue_url":"https://api.github.com/repos/dealii/dealii/issues/7303","number":7303,"state":"open","locked":false,"title":"Allow using CUDA-aware MPI","user":{"login":"masterleinad","id":2423533,"node_id":"MDQ6VXNlcjI0MjM1MzM=","avatar_url":"https://avatars0.githubusercontent.com/u/2423533?v=4","gravatar_id":"","url":"https://api.github.com/users/masterleinad","html_url":"https://github.com/masterleinad","followers_url":"https://api.github.com/users/masterleinad/followers","following_url":"https://api.github.com/users/masterleinad/following{/other_user}","gists_url":"https://api.github.com/users/masterleinad/gists{/gist_id}","starred_url":"https://api.github.com/users/masterleinad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/masterleinad/subscriptions","organizations_url":"https://api.github.com/users/masterleinad/orgs","repos_url":"https://api.github.com/users/masterleinad/repos","events_url":"https://api.github.com/users/masterleinad/events{/privacy}","received_events_url":"https://api.github.com/users/masterleinad/received_events","type":"User","site_admin":false},"body":"@Rombur and me want to be able to use CUDA-awareness of the MPI implementation used if possible.\r\nThis is an early version where just the current functions in `Utilities::MPI` gain an additional `MemorySpace` template parameter. In case we have a CUDA-aware MPI implementation, we use basically the (normal) CPU implementation. Otherwise, we copy to the CPU, perform the operation there and copy back to the device.\r\n\r\nDetecting CUDA-awareness is different for every implementation. Hence, we currently tend to let users set the `DEAL_II_WITH_CUDA_AWARE_MPI` flag themselves without any autodetection or check if this is safe to assume.\r\n\r\nAre there any opinions on the current design before we port all the other relevant MPI functions to a version also working with CUDA data? The diff is best to be viewed without whitespace changes.","created_at":"2018-10-08T20:33:00Z","updated_at":"2018-10-10T23:13:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"98cc00e980b455acc72e9cddf22b654418853ba9","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":255865986,"node_id":"MDU6TGFiZWwyNTU4NjU5ODY=","url":"https://api.github.com/repos/dealii/dealii/labels/Discussion","name":"Discussion","color":"800080","default":false},{"id":432982634,"node_id":"MDU6TGFiZWw0MzI5ODI2MzQ=","url":"https://api.github.com/repos/dealii/dealii/labels/GPU","name":"GPU","color":"FFE936","default":false},{"id":757987911,"node_id":"MDU6TGFiZWw3NTc5ODc5MTE=","url":"https://api.github.com/repos/dealii/dealii/labels/Parallel","name":"Parallel","color":"34e24b","default":false},{"id":252577276,"node_id":"MDU6TGFiZWwyNTI1NzcyNzY=","url":"https://api.github.com/repos/dealii/dealii/labels/RFC","name":"RFC","color":"829ce0","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/dealii/dealii/pulls/7303/commits","review_comments_url":"https://api.github.com/repos/dealii/dealii/pulls/7303/comments","review_comment_url":"https://api.github.com/repos/dealii/dealii/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dealii/dealii/issues/7303/comments","statuses_url":"https://api.github.com/repos/dealii/dealii/statuses/6ed38e647793f3fb8f71582e467bf25ceab80469","head":{"label":"masterleinad:cuda_aware_mpi","ref":"cuda_aware_mpi","sha":"6ed38e647793f3fb8f71582e467bf25ceab80469","user":{"login":"masterleinad","id":2423533,"node_id":"MDQ6VXNlcjI0MjM1MzM=","avatar_url":"https://avatars0.githubusercontent.com/u/2423533?v=4","gravatar_id":"","url":"https://api.github.com/users/masterleinad","html_url":"https://github.com/masterleinad","followers_url":"https://api.github.com/users/masterleinad/followers","following_url":"https://api.github.com/users/masterleinad/following{/other_user}","gists_url":"https://api.github.com/users/masterleinad/gists{/gist_id}","starred_url":"https://api.github.com/users/masterleinad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/masterleinad/subscriptions","organizations_url":"https://api.github.com/users/masterleinad/orgs","repos_url":"https://api.github.com/users/masterleinad/repos","events_url":"https://api.github.com/users/masterleinad/events{/privacy}","received_events_url":"https://api.github.com/users/masterleinad/received_events","type":"User","site_admin":false},"repo":{"id":22077233,"node_id":"MDEwOlJlcG9zaXRvcnkyMjA3NzIzMw==","name":"dealii","full_name":"masterleinad/dealii","private":false,"owner":{"login":"masterleinad","id":2423533,"node_id":"MDQ6VXNlcjI0MjM1MzM=","avatar_url":"https://avatars0.githubusercontent.com/u/2423533?v=4","gravatar_id":"","url":"https://api.github.com/users/masterleinad","html_url":"https://github.com/masterleinad","followers_url":"https://api.github.com/users/masterleinad/followers","following_url":"https://api.github.com/users/masterleinad/following{/other_user}","gists_url":"https://api.github.com/users/masterleinad/gists{/gist_id}","starred_url":"https://api.github.com/users/masterleinad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/masterleinad/subscriptions","organizations_url":"https://api.github.com/users/masterleinad/orgs","repos_url":"https://api.github.com/users/masterleinad/repos","events_url":"https://api.github.com/users/masterleinad/events{/privacy}","received_events_url":"https://api.github.com/users/masterleinad/received_events","type":"User","site_admin":false},"html_url":"https://github.com/masterleinad/dealii","description":null,"fork":true,"url":"https://api.github.com/repos/masterleinad/dealii","forks_url":"https://api.github.com/repos/masterleinad/dealii/forks","keys_url":"https://api.github.com/repos/masterleinad/dealii/keys{/key_id}","collaborators_url":"https://api.github.com/repos/masterleinad/dealii/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/masterleinad/dealii/teams","hooks_url":"https://api.github.com/repos/masterleinad/dealii/hooks","issue_events_url":"https://api.github.com/repos/masterleinad/dealii/issues/events{/number}","events_url":"https://api.github.com/repos/masterleinad/dealii/events","assignees_url":"https://api.github.com/repos/masterleinad/dealii/assignees{/user}","branches_url":"https://api.github.com/repos/masterleinad/dealii/branches{/branch}","tags_url":"https://api.github.com/repos/masterleinad/dealii/tags","blobs_url":"https://api.github.com/repos/masterleinad/dealii/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/masterleinad/dealii/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/masterleinad/dealii/git/refs{/sha}","trees_url":"https://api.github.com/repos/masterleinad/dealii/git/trees{/sha}","statuses_url":"https://api.github.com/repos/masterleinad/dealii/statuses/{sha}","languages_url":"https://api.github.com/repos/masterleinad/dealii/languages","stargazers_url":"https://api.github.com/repos/masterleinad/dealii/stargazers","contributors_url":"https://api.github.com/repos/masterleinad/dealii/contributors","subscribers_url":"https://api.github.com/repos/masterleinad/dealii/subscribers","subscription_url":"https://api.github.com/repos/masterleinad/dealii/subscription","commits_url":"https://api.github.com/repos/masterleinad/dealii/commits{/sha}","git_commits_url":"https://api.github.com/repos/masterleinad/dealii/git/commits{/sha}","comments_url":"https://api.github.com/repos/masterleinad/dealii/comments{/number}","issue_comment_url":"https://api.github.com/repos/masterleinad/dealii/issues/comments{/number}","contents_url":"https://api.github.com/repos/masterleinad/dealii/contents/{+path}","compare_url":"https://api.github.com/repos/masterleinad/dealii/compare/{base}...{head}","merges_url":"https://api.github.com/repos/masterleinad/dealii/merges","archive_url":"https://api.github.com/repos/masterleinad/dealii/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/masterleinad/dealii/downloads","issues_url":"https://api.github.com/repos/masterleinad/dealii/issues{/number}","pulls_url":"https://api.github.com/repos/masterleinad/dealii/pulls{/number}","milestones_url":"https://api.github.com/repos/masterleinad/dealii/milestones{/number}","notifications_url":"https://api.github.com/repos/masterleinad/dealii/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/masterleinad/dealii/labels{/name}","releases_url":"https://api.github.com/repos/masterleinad/dealii/releases{/id}","deployments_url":"https://api.github.com/repos/masterleinad/dealii/deployments","created_at":"2014-07-21T19:26:56Z","updated_at":"2018-07-02T15:05:40Z","pushed_at":"2018-10-10T21:47:39Z","git_url":"git://github.com/masterleinad/dealii.git","ssh_url":"git@github.com:masterleinad/dealii.git","clone_url":"https://github.com/masterleinad/dealii.git","svn_url":"https://github.com/masterleinad/dealii","homepage":null,"size":220838,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"other","name":"NOASSERTION","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"dealii:master","ref":"master","sha":"360b94235fb2942bbe8ec2562327ccd8d7d9c6e4","user":{"login":"dealii","id":7506070,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1MDYwNzA=","avatar_url":"https://avatars3.githubusercontent.com/u/7506070?v=4","gravatar_id":"","url":"https://api.github.com/users/dealii","html_url":"https://github.com/dealii","followers_url":"https://api.github.com/users/dealii/followers","following_url":"https://api.github.com/users/dealii/following{/other_user}","gists_url":"https://api.github.com/users/dealii/gists{/gist_id}","starred_url":"https://api.github.com/users/dealii/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dealii/subscriptions","organizations_url":"https://api.github.com/users/dealii/orgs","repos_url":"https://api.github.com/users/dealii/repos","events_url":"https://api.github.com/users/dealii/events{/privacy}","received_events_url":"https://api.github.com/users/dealii/received_events","type":"Organization","site_admin":false},"repo":{"id":21943980,"node_id":"MDEwOlJlcG9zaXRvcnkyMTk0Mzk4MA==","name":"dealii","full_name":"dealii/dealii","private":false,"owner":{"login":"dealii","id":7506070,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1MDYwNzA=","avatar_url":"https://avatars3.githubusercontent.com/u/7506070?v=4","gravatar_id":"","url":"https://api.github.com/users/dealii","html_url":"https://github.com/dealii","followers_url":"https://api.github.com/users/dealii/followers","following_url":"https://api.github.com/users/dealii/following{/other_user}","gists_url":"https://api.github.com/users/dealii/gists{/gist_id}","starred_url":"https://api.github.com/users/dealii/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dealii/subscriptions","organizations_url":"https://api.github.com/users/dealii/orgs","repos_url":"https://api.github.com/users/dealii/repos","events_url":"https://api.github.com/users/dealii/events{/privacy}","received_events_url":"https://api.github.com/users/dealii/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/dealii/dealii","description":"The development repository for the deal.II finite element library.","fork":false,"url":"https://api.github.com/repos/dealii/dealii","forks_url":"https://api.github.com/repos/dealii/dealii/forks","keys_url":"https://api.github.com/repos/dealii/dealii/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dealii/dealii/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dealii/dealii/teams","hooks_url":"https://api.github.com/repos/dealii/dealii/hooks","issue_events_url":"https://api.github.com/repos/dealii/dealii/issues/events{/number}","events_url":"https://api.github.com/repos/dealii/dealii/events","assignees_url":"https://api.github.com/repos/dealii/dealii/assignees{/user}","branches_url":"https://api.github.com/repos/dealii/dealii/branches{/branch}","tags_url":"https://api.github.com/repos/dealii/dealii/tags","blobs_url":"https://api.github.com/repos/dealii/dealii/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dealii/dealii/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dealii/dealii/git/refs{/sha}","trees_url":"https://api.github.com/repos/dealii/dealii/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dealii/dealii/statuses/{sha}","languages_url":"https://api.github.com/repos/dealii/dealii/languages","stargazers_url":"https://api.github.com/repos/dealii/dealii/stargazers","contributors_url":"https://api.github.com/repos/dealii/dealii/contributors","subscribers_url":"https://api.github.com/repos/dealii/dealii/subscribers","subscription_url":"https://api.github.com/repos/dealii/dealii/subscription","commits_url":"https://api.github.com/repos/dealii/dealii/commits{/sha}","git_commits_url":"https://api.github.com/repos/dealii/dealii/git/commits{/sha}","comments_url":"https://api.github.com/repos/dealii/dealii/comments{/number}","issue_comment_url":"https://api.github.com/repos/dealii/dealii/issues/comments{/number}","contents_url":"https://api.github.com/repos/dealii/dealii/contents/{+path}","compare_url":"https://api.github.com/repos/dealii/dealii/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dealii/dealii/merges","archive_url":"https://api.github.com/repos/dealii/dealii/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dealii/dealii/downloads","issues_url":"https://api.github.com/repos/dealii/dealii/issues{/number}","pulls_url":"https://api.github.com/repos/dealii/dealii/pulls{/number}","milestones_url":"https://api.github.com/repos/dealii/dealii/milestones{/number}","notifications_url":"https://api.github.com/repos/dealii/dealii/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dealii/dealii/labels{/name}","releases_url":"https://api.github.com/repos/dealii/dealii/releases{/id}","deployments_url":"https://api.github.com/repos/dealii/dealii/deployments","created_at":"2014-07-17T14:00:26Z","updated_at":"2018-10-10T21:52:23Z","pushed_at":"2018-10-10T23:03:45Z","git_url":"git://github.com/dealii/dealii.git","ssh_url":"git@github.com:dealii/dealii.git","clone_url":"https://github.com/dealii/dealii.git","svn_url":"https://github.com/dealii/dealii","homepage":"https://www.dealii.org/","size":205199,"stargazers_count":373,"watchers_count":373,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":324,"mirror_url":null,"archived":false,"open_issues_count":310,"license":{"key":"other","name":"NOASSERTION","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":324,"open_issues":310,"watchers":373,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dealii/dealii/pulls/7303"},"html":{"href":"https://github.com/dealii/dealii/pull/7303"},"issue":{"href":"https://api.github.com/repos/dealii/dealii/issues/7303"},"comments":{"href":"https://api.github.com/repos/dealii/dealii/issues/7303/comments"},"review_comments":{"href":"https://api.github.com/repos/dealii/dealii/pulls/7303/comments"},"review_comment":{"href":"https://api.github.com/repos/dealii/dealii/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dealii/dealii/pulls/7303/commits"},"statuses":{"href":"https://api.github.com/repos/dealii/dealii/statuses/6ed38e647793f3fb8f71582e467bf25ceab80469"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"bangerth"}}