{"action":"created","issue":{"url":"https://api.github.com/repos/dash-project/dash/issues/221","repository_url":"https://api.github.com/repos/dash-project/dash","labels_url":"https://api.github.com/repos/dash-project/dash/issues/221/labels{/name}","comments_url":"https://api.github.com/repos/dash-project/dash/issues/221/comments","events_url":"https://api.github.com/repos/dash-project/dash/issues/221/events","html_url":"https://github.com/dash-project/dash/issues/221","id":197195514,"number":221,"title":"Segment IDs and dynamic global data structures ","user":{"login":"devreal","id":10974502,"avatar_url":"https://avatars.githubusercontent.com/u/10974502?v=3","gravatar_id":"","url":"https://api.github.com/users/devreal","html_url":"https://github.com/devreal","followers_url":"https://api.github.com/users/devreal/followers","following_url":"https://api.github.com/users/devreal/following{/other_user}","gists_url":"https://api.github.com/users/devreal/gists{/gist_id}","starred_url":"https://api.github.com/users/devreal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devreal/subscriptions","organizations_url":"https://api.github.com/users/devreal/orgs","repos_url":"https://api.github.com/users/devreal/repos","events_url":"https://api.github.com/users/devreal/events{/privacy}","received_events_url":"https://api.github.com/users/devreal/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"fuchsto","id":37075,"avatar_url":"https://avatars.githubusercontent.com/u/37075?v=3","gravatar_id":"","url":"https://api.github.com/users/fuchsto","html_url":"https://github.com/fuchsto","followers_url":"https://api.github.com/users/fuchsto/followers","following_url":"https://api.github.com/users/fuchsto/following{/other_user}","gists_url":"https://api.github.com/users/fuchsto/gists{/gist_id}","starred_url":"https://api.github.com/users/fuchsto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fuchsto/subscriptions","organizations_url":"https://api.github.com/users/fuchsto/orgs","repos_url":"https://api.github.com/users/fuchsto/repos","events_url":"https://api.github.com/users/fuchsto/events{/privacy}","received_events_url":"https://api.github.com/users/fuchsto/received_events","type":"User","site_admin":false},"assignees":[{"login":"fuchsto","id":37075,"avatar_url":"https://avatars.githubusercontent.com/u/37075?v=3","gravatar_id":"","url":"https://api.github.com/users/fuchsto","html_url":"https://github.com/fuchsto","followers_url":"https://api.github.com/users/fuchsto/followers","following_url":"https://api.github.com/users/fuchsto/following{/other_user}","gists_url":"https://api.github.com/users/fuchsto/gists{/gist_id}","starred_url":"https://api.github.com/users/fuchsto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fuchsto/subscriptions","organizations_url":"https://api.github.com/users/fuchsto/orgs","repos_url":"https://api.github.com/users/fuchsto/repos","events_url":"https://api.github.com/users/fuchsto/events{/privacy}","received_events_url":"https://api.github.com/users/fuchsto/received_events","type":"User","site_admin":false},{"login":"fuerlinger","id":475258,"avatar_url":"https://avatars.githubusercontent.com/u/475258?v=3","gravatar_id":"","url":"https://api.github.com/users/fuerlinger","html_url":"https://github.com/fuerlinger","followers_url":"https://api.github.com/users/fuerlinger/followers","following_url":"https://api.github.com/users/fuerlinger/following{/other_user}","gists_url":"https://api.github.com/users/fuerlinger/gists{/gist_id}","starred_url":"https://api.github.com/users/fuerlinger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fuerlinger/subscriptions","organizations_url":"https://api.github.com/users/fuerlinger/orgs","repos_url":"https://api.github.com/users/fuerlinger/repos","events_url":"https://api.github.com/users/fuerlinger/events{/privacy}","received_events_url":"https://api.github.com/users/fuerlinger/received_events","type":"User","site_admin":false},{"login":"devreal","id":10974502,"avatar_url":"https://avatars.githubusercontent.com/u/10974502?v=3","gravatar_id":"","url":"https://api.github.com/users/devreal","html_url":"https://github.com/devreal","followers_url":"https://api.github.com/users/devreal/followers","following_url":"https://api.github.com/users/devreal/following{/other_user}","gists_url":"https://api.github.com/users/devreal/gists{/gist_id}","starred_url":"https://api.github.com/users/devreal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devreal/subscriptions","organizations_url":"https://api.github.com/users/devreal/orgs","repos_url":"https://api.github.com/users/devreal/repos","events_url":"https://api.github.com/users/devreal/events{/privacy}","received_events_url":"https://api.github.com/users/devreal/received_events","type":"User","site_admin":false}],"milestone":null,"comments":1,"created_at":"2016-12-22T15:12:39Z","updated_at":"2016-12-22T18:42:10Z","closed_at":null,"body":"While investigating #118 I noticed that segment IDs in DART are not reused, limiting the total number of team-aligned global memory allocations to 2^15 (32k). At the same time, I noticed that some DASH algorithms allocate short-lived global data structures, see dash::accumulate as an example. I haven't checked where else this is the case. \r\n\r\nConsider long-running real-world applications with time-stepping loop iterations beyond 64k, each loop iteration using the convenience of the dash algorithms. We will easily run into issues there, not only because the current implementation in DART does not check for overflows of segment IDs. \r\n\r\nThis might not be relevant for the 0.3.0 release but we need to track this. Is there any reason why segment IDs are not reused at the moment? "},"comment":{"url":"https://api.github.com/repos/dash-project/dash/issues/comments/268863282","html_url":"https://github.com/dash-project/dash/issues/221#issuecomment-268863282","issue_url":"https://api.github.com/repos/dash-project/dash/issues/221","id":268863282,"user":{"login":"fuchsto","id":37075,"avatar_url":"https://avatars.githubusercontent.com/u/37075?v=3","gravatar_id":"","url":"https://api.github.com/users/fuchsto","html_url":"https://github.com/fuchsto","followers_url":"https://api.github.com/users/fuchsto/followers","following_url":"https://api.github.com/users/fuchsto/following{/other_user}","gists_url":"https://api.github.com/users/fuchsto/gists{/gist_id}","starred_url":"https://api.github.com/users/fuchsto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fuchsto/subscriptions","organizations_url":"https://api.github.com/users/fuchsto/orgs","repos_url":"https://api.github.com/users/fuchsto/repos","events_url":"https://api.github.com/users/fuchsto/events{/privacy}","received_events_url":"https://api.github.com/users/fuchsto/received_events","type":"User","site_admin":false},"created_at":"2016-12-22T18:42:10Z","updated_at":"2016-12-22T18:42:10Z","body":"Yes, this definitely has to be fixed. Bugs resulting from this limit would be obscure to a cruel extent, it's adequate to call it sabotage.\r\n\r\nI don't know of a reason for this, and if there is, it can't be a good one.\r\nThe only reason I can think of is that it's not trivial with respect to consistency of the global address range.\r\n\r\nThe problem with re-using segment IDs is their unambiguousness:\r\nTo reuse a segment ID, it must first be ensured that no unit references a memory space involving this segment ID.\r\n\r\nThis requirement can be reduced to safe resource reclamation and fortunately there are known good strategies to resolve this is kind of problem:\r\n\r\n- If deallocation is synchronized: can use reference counting\r\n- If deallocation is asymmetric: hazard pointers\r\n"}}
{"actor":{"display_login":"fuchsto"}}