{"action":"created","issue":{"url":"https://api.github.com/repos/deeplearning4j/nd4j/issues/827","repository_url":"https://api.github.com/repos/deeplearning4j/nd4j","labels_url":"https://api.github.com/repos/deeplearning4j/nd4j/issues/827/labels{/name}","comments_url":"https://api.github.com/repos/deeplearning4j/nd4j/issues/827/comments","events_url":"https://api.github.com/repos/deeplearning4j/nd4j/issues/827/events","html_url":"https://github.com/deeplearning4j/nd4j/issues/827","id":148036099,"number":827,"title":"CUDA state","user":{"login":"raver119","id":12250879,"avatar_url":"https://avatars.githubusercontent.com/u/12250879?v=3","gravatar_id":"","url":"https://api.github.com/users/raver119","html_url":"https://github.com/raver119","followers_url":"https://api.github.com/users/raver119/followers","following_url":"https://api.github.com/users/raver119/following{/other_user}","gists_url":"https://api.github.com/users/raver119/gists{/gist_id}","starred_url":"https://api.github.com/users/raver119/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raver119/subscriptions","organizations_url":"https://api.github.com/users/raver119/orgs","repos_url":"https://api.github.com/users/raver119/repos","events_url":"https://api.github.com/users/raver119/events{/privacy}","received_events_url":"https://api.github.com/users/raver119/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-04-13T11:54:47Z","updated_at":"2016-04-13T16:31:27Z","closed_at":null,"body":"**Current known problems on C side:**\r\n\r\n- F-ordered IAMax, IAMin, and respectively special op IsMax\r\n- IsMax along specified dimension\r\n- F-ordered Col2Im (and probably Im2Col? though simple tests were passing)\r\n\r\n**Current known problems on Java side:**\r\n\r\n- We lack user-friendly configuration for CUDA. Everything is configurable under the hood, and it’s time to bring full configuration process to user-level.\r\n- Non-host memory modes require some testing. Host-mode is tested more then well, due to the fact that it’s the only memory mode used during kernels debugging.\r\n- Memory alignment for blockwise reductions should be calculated manually, and should take in account user-controllable max gridSize.\r\n- We still lack synchronization over shared cuBLAS stream handle. Not a big deal, but should be solved.\r\n- Yet to be decided, if we go for device memory caching or no. I’d try that.\r\n- Memory consumption with different cache settings should be thoroughly checked.\r\n- Memory cache has no TTL at this moment. For typical tasks it’s not a problem, but it might become a problem if someone gets nd4j for different tasks. However, in worst case (right now) caching will just become useless after reaching threshold.\r\n\r\n**CUDA kernels performance issues:**\r\n\r\n- We still have few hidden mallocs within shape::ind2sub and the like routines. We should should switch that to shape::cuMalloc, and reuse buffer memory.\r\n- Polishing pass over unused/excessive internal variables and calculations within kernels is mandatory.\r\n- Broadcast ops and their indexing are definitely make worried about performance. That op should be profiled thoroughly.\r\n- All kernels are still executed in blocking mode. After this restriction lifted, only kernels with scalar output should stay blocking."},"comment":{"url":"https://api.github.com/repos/deeplearning4j/nd4j/issues/comments/209533285","html_url":"https://github.com/deeplearning4j/nd4j/issues/827#issuecomment-209533285","issue_url":"https://api.github.com/repos/deeplearning4j/nd4j/issues/827","id":209533285,"user":{"login":"raver119","id":12250879,"avatar_url":"https://avatars.githubusercontent.com/u/12250879?v=3","gravatar_id":"","url":"https://api.github.com/users/raver119","html_url":"https://github.com/raver119","followers_url":"https://api.github.com/users/raver119/followers","following_url":"https://api.github.com/users/raver119/following{/other_user}","gists_url":"https://api.github.com/users/raver119/gists{/gist_id}","starred_url":"https://api.github.com/users/raver119/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raver119/subscriptions","organizations_url":"https://api.github.com/users/raver119/orgs","repos_url":"https://api.github.com/users/raver119/repos","events_url":"https://api.github.com/users/raver119/events{/privacy}","received_events_url":"https://api.github.com/users/raver119/received_events","type":"User","site_admin":false},"created_at":"2016-04-13T16:31:27Z","updated_at":"2016-04-13T16:31:27Z","body":"and one more thing: @agibsonccc was going to introduce special ops for reduce3 things like cosine/euclidean/manhattan."}}