{"action":"created","issue":{"url":"https://api.github.com/repos/dealii/dealii/issues/6220","repository_url":"https://api.github.com/repos/dealii/dealii","labels_url":"https://api.github.com/repos/dealii/dealii/issues/6220/labels{/name}","comments_url":"https://api.github.com/repos/dealii/dealii/issues/6220/comments","events_url":"https://api.github.com/repos/dealii/dealii/issues/6220/events","html_url":"https://github.com/dealii/dealii/pull/6220","id":313110227,"number":6220,"title":"[RFC] Add CG test using cuda","user":{"login":"Rombur","id":368538,"avatar_url":"https://avatars3.githubusercontent.com/u/368538?v=4","gravatar_id":"","url":"https://api.github.com/users/Rombur","html_url":"https://github.com/Rombur","followers_url":"https://api.github.com/users/Rombur/followers","following_url":"https://api.github.com/users/Rombur/following{/other_user}","gists_url":"https://api.github.com/users/Rombur/gists{/gist_id}","starred_url":"https://api.github.com/users/Rombur/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Rombur/subscriptions","organizations_url":"https://api.github.com/users/Rombur/orgs","repos_url":"https://api.github.com/users/Rombur/repos","events_url":"https://api.github.com/users/Rombur/events{/privacy}","received_events_url":"https://api.github.com/users/Rombur/received_events","type":"User","site_admin":false},"labels":[{"id":432982634,"url":"https://api.github.com/repos/dealii/dealii/labels/GPU","name":"GPU","color":"FFE936","default":false},{"id":252577276,"url":"https://api.github.com/repos/dealii/dealii/labels/RFC","name":"RFC","color":"cc518c","default":false}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":16,"created_at":"2018-04-10T22:23:06Z","updated_at":"2018-04-13T21:30:57Z","closed_at":"2018-04-13T12:56:46Z","author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/dealii/dealii/pulls/6220","html_url":"https://github.com/dealii/dealii/pull/6220","diff_url":"https://github.com/dealii/dealii/pull/6220.diff","patch_url":"https://github.com/dealii/dealii/pull/6220.patch"},"body":"This PR adds a test where `dealii::SolverCG` is used with a CUDA matrix. However there is a problem with `GrowingVectorMemory`. Basically what happens is that `GrowingVectorMemory` release the memory after the CUDA environment is shut down and so we get an error about the driver shutting down (see [here](https://stackoverflow.com/questions/43235548/how-to-handle-cudafree-on-globally-instantiated-variables) for a similar problem). The solution is to free the memory by hand before exiting the program. So I have two questions:\r\n 1. Is this an acceptable solution and if not, what should I do?\r\n 2. Giving this problem should we instantiation `GrowingVectorMemory` for the CUDA vector or this should be done by more advanced users only?"},"comment":{"url":"https://api.github.com/repos/dealii/dealii/issues/comments/381265607","html_url":"https://github.com/dealii/dealii/pull/6220#issuecomment-381265607","issue_url":"https://api.github.com/repos/dealii/dealii/issues/6220","id":381265607,"user":{"login":"Rombur","id":368538,"avatar_url":"https://avatars3.githubusercontent.com/u/368538?v=4","gravatar_id":"","url":"https://api.github.com/users/Rombur","html_url":"https://github.com/Rombur","followers_url":"https://api.github.com/users/Rombur/followers","following_url":"https://api.github.com/users/Rombur/following{/other_user}","gists_url":"https://api.github.com/users/Rombur/gists{/gist_id}","starred_url":"https://api.github.com/users/Rombur/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Rombur/subscriptions","organizations_url":"https://api.github.com/users/Rombur/orgs","repos_url":"https://api.github.com/users/Rombur/repos","events_url":"https://api.github.com/users/Rombur/events{/privacy}","received_events_url":"https://api.github.com/users/Rombur/received_events","type":"User","site_admin":false},"created_at":"2018-04-13T21:30:57Z","updated_at":"2018-04-13T21:30:57Z","author_association":"MEMBER","body":"I looked at what they do in `TensorFlow` and they create a structure similar to the one I proposed. They also have multiple handles for each library because they use multiple streams. Streams allow you to overlap communication and data transfer. Using multiple streams is somewhat similar to use non-blocking functions in MPI. "}}
{"actor":{"display_login":"Rombur"}}