{"action":"created","comment":{"url":"https://api.github.com/repos/chapel-lang/chapel/pulls/comments/65534607","id":65534607,"diff_hunk":"@@ -406,6 +513,21 @@ module DefaultSparse {\n       return irv;\n     }\n \n+    proc sparseBulkShiftArray(shiftMap, oldnnz){","path":"modules/internal/DefaultSparse.chpl","position":120,"original_position":120,"commit_id":"567671fde1189fc40eeabd4ca55ba2df90fa3d49","original_commit_id":"567671fde1189fc40eeabd4ca55ba2df90fa3d49","user":{"login":"mppf","id":3653132,"avatar_url":"https://avatars.githubusercontent.com/u/3653132?v=3","gravatar_id":"","url":"https://api.github.com/users/mppf","html_url":"https://github.com/mppf","followers_url":"https://api.github.com/users/mppf/followers","following_url":"https://api.github.com/users/mppf/following{/other_user}","gists_url":"https://api.github.com/users/mppf/gists{/gist_id}","starred_url":"https://api.github.com/users/mppf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mppf/subscriptions","organizations_url":"https://api.github.com/users/mppf/orgs","repos_url":"https://api.github.com/users/mppf/repos","events_url":"https://api.github.com/users/mppf/events{/privacy}","received_events_url":"https://api.github.com/users/mppf/received_events","type":"User","site_admin":false},"body":"It's probably obvious to you what sparseBulkShiftArray is doing and why, but I don't understand immediately. Could you add a comment to it describing what it does here? I think it would be also nice to have a comment describing sparseShiftArray. I don't already know what either of these do...","created_at":"2016-06-02T13:03:55Z","updated_at":"2016-06-02T13:03:55Z","html_url":"https://github.com/chapel-lang/chapel/pull/3948#discussion_r65534607","pull_request_url":"https://api.github.com/repos/chapel-lang/chapel/pulls/3948","_links":{"self":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/comments/65534607"},"html":{"href":"https://github.com/chapel-lang/chapel/pull/3948#discussion_r65534607"},"pull_request":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/3948"}}},"pull_request":{"url":"https://api.github.com/repos/chapel-lang/chapel/pulls/3948","id":72290082,"html_url":"https://github.com/chapel-lang/chapel/pull/3948","diff_url":"https://github.com/chapel-lang/chapel/pull/3948.diff","patch_url":"https://github.com/chapel-lang/chapel/pull/3948.patch","issue_url":"https://api.github.com/repos/chapel-lang/chapel/issues/3948","number":3948,"state":"open","locked":false,"title":"+= overloads for sparse subdomains","user":{"login":"e-kayrakli","id":4141670,"avatar_url":"https://avatars.githubusercontent.com/u/4141670?v=3","gravatar_id":"","url":"https://api.github.com/users/e-kayrakli","html_url":"https://github.com/e-kayrakli","followers_url":"https://api.github.com/users/e-kayrakli/followers","following_url":"https://api.github.com/users/e-kayrakli/following{/other_user}","gists_url":"https://api.github.com/users/e-kayrakli/gists{/gist_id}","starred_url":"https://api.github.com/users/e-kayrakli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/e-kayrakli/subscriptions","organizations_url":"https://api.github.com/users/e-kayrakli/orgs","repos_url":"https://api.github.com/users/e-kayrakli/repos","events_url":"https://api.github.com/users/e-kayrakli/events{/privacy}","received_events_url":"https://api.github.com/users/e-kayrakli/received_events","type":"User","site_admin":false},"body":"This pull request adds some += overloads for non-distributed sparse subdomains.\r\n\r\nFollowing lines call bulkAdd that inserts indices _hopefully_ efficiently. Some basic performance tests(not included) showed couple orders of magnitude speedup compared to adding indices one by one, which is not surprising.\r\n\r\n```\r\nSD += array_of_indices; //not necessarily sorted, can have duplicates\r\nSD += other_dense_dom;\r\nSD += other_sparse_dom;\r\n```\r\n\r\nIn case of adding array of indices, bulkAdd can be called directly to avoid sorting and duplicate checking. But it's user's responsibility to make sure that the indices are actually sorted and have no duplicates.\r\n\r\n```\r\nSD.bulkAdd(sorted_nodup_indices, true, true);\r\n```\r\n\r\nPR also adds some tests for correctness.\r\n\r\nFew ideas for future steps on this:\r\n\r\n- There _might be_ room for some optimization for adding sparse subdomains, especially when their layout is the same. This PR iterates over the indices of RHS domain to create an array of indexes.\r\n- += for `SparseBlockDom`","created_at":"2016-06-02T05:10:14Z","updated_at":"2016-06-02T13:03:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"77e94979775546b0b655bbf95682f6ca34652da9","assignee":{"login":"mppf","id":3653132,"avatar_url":"https://avatars.githubusercontent.com/u/3653132?v=3","gravatar_id":"","url":"https://api.github.com/users/mppf","html_url":"https://github.com/mppf","followers_url":"https://api.github.com/users/mppf/followers","following_url":"https://api.github.com/users/mppf/following{/other_user}","gists_url":"https://api.github.com/users/mppf/gists{/gist_id}","starred_url":"https://api.github.com/users/mppf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mppf/subscriptions","organizations_url":"https://api.github.com/users/mppf/orgs","repos_url":"https://api.github.com/users/mppf/repos","events_url":"https://api.github.com/users/mppf/events{/privacy}","received_events_url":"https://api.github.com/users/mppf/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/chapel-lang/chapel/pulls/3948/commits","review_comments_url":"https://api.github.com/repos/chapel-lang/chapel/pulls/3948/comments","review_comment_url":"https://api.github.com/repos/chapel-lang/chapel/pulls/comments{/number}","comments_url":"https://api.github.com/repos/chapel-lang/chapel/issues/3948/comments","statuses_url":"https://api.github.com/repos/chapel-lang/chapel/statuses/567671fde1189fc40eeabd4ca55ba2df90fa3d49","head":{"label":"e-kayrakli:sparse-bulk-op","ref":"sparse-bulk-op","sha":"567671fde1189fc40eeabd4ca55ba2df90fa3d49","user":{"login":"e-kayrakli","id":4141670,"avatar_url":"https://avatars.githubusercontent.com/u/4141670?v=3","gravatar_id":"","url":"https://api.github.com/users/e-kayrakli","html_url":"https://github.com/e-kayrakli","followers_url":"https://api.github.com/users/e-kayrakli/followers","following_url":"https://api.github.com/users/e-kayrakli/following{/other_user}","gists_url":"https://api.github.com/users/e-kayrakli/gists{/gist_id}","starred_url":"https://api.github.com/users/e-kayrakli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/e-kayrakli/subscriptions","organizations_url":"https://api.github.com/users/e-kayrakli/orgs","repos_url":"https://api.github.com/users/e-kayrakli/repos","events_url":"https://api.github.com/users/e-kayrakli/events{/privacy}","received_events_url":"https://api.github.com/users/e-kayrakli/received_events","type":"User","site_admin":false},"repo":{"id":58942509,"name":"chapel","full_name":"e-kayrakli/chapel","owner":{"login":"e-kayrakli","id":4141670,"avatar_url":"https://avatars.githubusercontent.com/u/4141670?v=3","gravatar_id":"","url":"https://api.github.com/users/e-kayrakli","html_url":"https://github.com/e-kayrakli","followers_url":"https://api.github.com/users/e-kayrakli/followers","following_url":"https://api.github.com/users/e-kayrakli/following{/other_user}","gists_url":"https://api.github.com/users/e-kayrakli/gists{/gist_id}","starred_url":"https://api.github.com/users/e-kayrakli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/e-kayrakli/subscriptions","organizations_url":"https://api.github.com/users/e-kayrakli/orgs","repos_url":"https://api.github.com/users/e-kayrakli/repos","events_url":"https://api.github.com/users/e-kayrakli/events{/privacy}","received_events_url":"https://api.github.com/users/e-kayrakli/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/e-kayrakli/chapel","description":"a Productive Parallel Programming Language","fork":true,"url":"https://api.github.com/repos/e-kayrakli/chapel","forks_url":"https://api.github.com/repos/e-kayrakli/chapel/forks","keys_url":"https://api.github.com/repos/e-kayrakli/chapel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/e-kayrakli/chapel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/e-kayrakli/chapel/teams","hooks_url":"https://api.github.com/repos/e-kayrakli/chapel/hooks","issue_events_url":"https://api.github.com/repos/e-kayrakli/chapel/issues/events{/number}","events_url":"https://api.github.com/repos/e-kayrakli/chapel/events","assignees_url":"https://api.github.com/repos/e-kayrakli/chapel/assignees{/user}","branches_url":"https://api.github.com/repos/e-kayrakli/chapel/branches{/branch}","tags_url":"https://api.github.com/repos/e-kayrakli/chapel/tags","blobs_url":"https://api.github.com/repos/e-kayrakli/chapel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/e-kayrakli/chapel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/e-kayrakli/chapel/git/refs{/sha}","trees_url":"https://api.github.com/repos/e-kayrakli/chapel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/e-kayrakli/chapel/statuses/{sha}","languages_url":"https://api.github.com/repos/e-kayrakli/chapel/languages","stargazers_url":"https://api.github.com/repos/e-kayrakli/chapel/stargazers","contributors_url":"https://api.github.com/repos/e-kayrakli/chapel/contributors","subscribers_url":"https://api.github.com/repos/e-kayrakli/chapel/subscribers","subscription_url":"https://api.github.com/repos/e-kayrakli/chapel/subscription","commits_url":"https://api.github.com/repos/e-kayrakli/chapel/commits{/sha}","git_commits_url":"https://api.github.com/repos/e-kayrakli/chapel/git/commits{/sha}","comments_url":"https://api.github.com/repos/e-kayrakli/chapel/comments{/number}","issue_comment_url":"https://api.github.com/repos/e-kayrakli/chapel/issues/comments{/number}","contents_url":"https://api.github.com/repos/e-kayrakli/chapel/contents/{+path}","compare_url":"https://api.github.com/repos/e-kayrakli/chapel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/e-kayrakli/chapel/merges","archive_url":"https://api.github.com/repos/e-kayrakli/chapel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/e-kayrakli/chapel/downloads","issues_url":"https://api.github.com/repos/e-kayrakli/chapel/issues{/number}","pulls_url":"https://api.github.com/repos/e-kayrakli/chapel/pulls{/number}","milestones_url":"https://api.github.com/repos/e-kayrakli/chapel/milestones{/number}","notifications_url":"https://api.github.com/repos/e-kayrakli/chapel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/e-kayrakli/chapel/labels{/name}","releases_url":"https://api.github.com/repos/e-kayrakli/chapel/releases{/id}","deployments_url":"https://api.github.com/repos/e-kayrakli/chapel/deployments","created_at":"2016-05-16T15:13:42Z","updated_at":"2016-05-16T15:14:09Z","pushed_at":"2016-06-02T00:29:12Z","git_url":"git://github.com/e-kayrakli/chapel.git","ssh_url":"git@github.com:e-kayrakli/chapel.git","clone_url":"https://github.com/e-kayrakli/chapel.git","svn_url":"https://github.com/e-kayrakli/chapel","homepage":"http://chapel.cray.com/","size":361881,"stargazers_count":0,"watchers_count":0,"language":"Chapel","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"chapel-lang:master","ref":"master","sha":"ca55a910b2b3d2cd1ca4c6b5ac3939a5d0f2af21","user":{"login":"chapel-lang","id":7597261,"avatar_url":"https://avatars.githubusercontent.com/u/7597261?v=3","gravatar_id":"","url":"https://api.github.com/users/chapel-lang","html_url":"https://github.com/chapel-lang","followers_url":"https://api.github.com/users/chapel-lang/followers","following_url":"https://api.github.com/users/chapel-lang/following{/other_user}","gists_url":"https://api.github.com/users/chapel-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/chapel-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chapel-lang/subscriptions","organizations_url":"https://api.github.com/users/chapel-lang/orgs","repos_url":"https://api.github.com/users/chapel-lang/repos","events_url":"https://api.github.com/users/chapel-lang/events{/privacy}","received_events_url":"https://api.github.com/users/chapel-lang/received_events","type":"Organization","site_admin":false},"repo":{"id":21663285,"name":"chapel","full_name":"chapel-lang/chapel","owner":{"login":"chapel-lang","id":7597261,"avatar_url":"https://avatars.githubusercontent.com/u/7597261?v=3","gravatar_id":"","url":"https://api.github.com/users/chapel-lang","html_url":"https://github.com/chapel-lang","followers_url":"https://api.github.com/users/chapel-lang/followers","following_url":"https://api.github.com/users/chapel-lang/following{/other_user}","gists_url":"https://api.github.com/users/chapel-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/chapel-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chapel-lang/subscriptions","organizations_url":"https://api.github.com/users/chapel-lang/orgs","repos_url":"https://api.github.com/users/chapel-lang/repos","events_url":"https://api.github.com/users/chapel-lang/events{/privacy}","received_events_url":"https://api.github.com/users/chapel-lang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/chapel-lang/chapel","description":"a Productive Parallel Programming Language","fork":false,"url":"https://api.github.com/repos/chapel-lang/chapel","forks_url":"https://api.github.com/repos/chapel-lang/chapel/forks","keys_url":"https://api.github.com/repos/chapel-lang/chapel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chapel-lang/chapel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chapel-lang/chapel/teams","hooks_url":"https://api.github.com/repos/chapel-lang/chapel/hooks","issue_events_url":"https://api.github.com/repos/chapel-lang/chapel/issues/events{/number}","events_url":"https://api.github.com/repos/chapel-lang/chapel/events","assignees_url":"https://api.github.com/repos/chapel-lang/chapel/assignees{/user}","branches_url":"https://api.github.com/repos/chapel-lang/chapel/branches{/branch}","tags_url":"https://api.github.com/repos/chapel-lang/chapel/tags","blobs_url":"https://api.github.com/repos/chapel-lang/chapel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chapel-lang/chapel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chapel-lang/chapel/git/refs{/sha}","trees_url":"https://api.github.com/repos/chapel-lang/chapel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chapel-lang/chapel/statuses/{sha}","languages_url":"https://api.github.com/repos/chapel-lang/chapel/languages","stargazers_url":"https://api.github.com/repos/chapel-lang/chapel/stargazers","contributors_url":"https://api.github.com/repos/chapel-lang/chapel/contributors","subscribers_url":"https://api.github.com/repos/chapel-lang/chapel/subscribers","subscription_url":"https://api.github.com/repos/chapel-lang/chapel/subscription","commits_url":"https://api.github.com/repos/chapel-lang/chapel/commits{/sha}","git_commits_url":"https://api.github.com/repos/chapel-lang/chapel/git/commits{/sha}","comments_url":"https://api.github.com/repos/chapel-lang/chapel/comments{/number}","issue_comment_url":"https://api.github.com/repos/chapel-lang/chapel/issues/comments{/number}","contents_url":"https://api.github.com/repos/chapel-lang/chapel/contents/{+path}","compare_url":"https://api.github.com/repos/chapel-lang/chapel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chapel-lang/chapel/merges","archive_url":"https://api.github.com/repos/chapel-lang/chapel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chapel-lang/chapel/downloads","issues_url":"https://api.github.com/repos/chapel-lang/chapel/issues{/number}","pulls_url":"https://api.github.com/repos/chapel-lang/chapel/pulls{/number}","milestones_url":"https://api.github.com/repos/chapel-lang/chapel/milestones{/number}","notifications_url":"https://api.github.com/repos/chapel-lang/chapel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chapel-lang/chapel/labels{/name}","releases_url":"https://api.github.com/repos/chapel-lang/chapel/releases{/id}","deployments_url":"https://api.github.com/repos/chapel-lang/chapel/deployments","created_at":"2014-07-09T18:15:54Z","updated_at":"2016-05-31T03:17:33Z","pushed_at":"2016-06-02T05:10:14Z","git_url":"git://github.com/chapel-lang/chapel.git","ssh_url":"git@github.com:chapel-lang/chapel.git","clone_url":"https://github.com/chapel-lang/chapel.git","svn_url":"https://github.com/chapel-lang/chapel","homepage":"http://chapel.cray.com/","size":472878,"stargazers_count":274,"watchers_count":274,"language":"Chapel","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":103,"mirror_url":null,"open_issues_count":16,"forks":103,"open_issues":16,"watchers":274,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/3948"},"html":{"href":"https://github.com/chapel-lang/chapel/pull/3948"},"issue":{"href":"https://api.github.com/repos/chapel-lang/chapel/issues/3948"},"comments":{"href":"https://api.github.com/repos/chapel-lang/chapel/issues/3948/comments"},"review_comments":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/3948/comments"},"review_comment":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/3948/commits"},"statuses":{"href":"https://api.github.com/repos/chapel-lang/chapel/statuses/567671fde1189fc40eeabd4ca55ba2df90fa3d49"}}}}
{"actor":{"display_login":"mppf"}}