{"action":"created","issue":{"url":"https://api.github.com/repos/Theano/libgpuarray/issues/126","repository_url":"https://api.github.com/repos/Theano/libgpuarray","labels_url":"https://api.github.com/repos/Theano/libgpuarray/issues/126/labels{/name}","comments_url":"https://api.github.com/repos/Theano/libgpuarray/issues/126/comments","events_url":"https://api.github.com/repos/Theano/libgpuarray/issues/126/events","html_url":"https://github.com/Theano/libgpuarray/issues/126","id":136427191,"number":126,"title":"Clarification of design goals","user":{"login":"adler-j","id":2202312,"avatar_url":"https://avatars.githubusercontent.com/u/2202312?v=3","gravatar_id":"","url":"https://api.github.com/users/adler-j","html_url":"https://github.com/adler-j","followers_url":"https://api.github.com/users/adler-j/followers","following_url":"https://api.github.com/users/adler-j/following{/other_user}","gists_url":"https://api.github.com/users/adler-j/gists{/gist_id}","starred_url":"https://api.github.com/users/adler-j/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adler-j/subscriptions","organizations_url":"https://api.github.com/users/adler-j/orgs","repos_url":"https://api.github.com/users/adler-j/repos","events_url":"https://api.github.com/users/adler-j/events{/privacy}","received_events_url":"https://api.github.com/users/adler-j/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2016-02-25T15:51:45Z","updated_at":"2016-02-25T16:51:28Z","closed_at":null,"body":"In an open source package for inverse problems ([odl](https://github.com/odlgroup/odl)), we're looking for an alternative CUDA backend with N-D support. libgpuarray looks interesting, but I have some questions that need clarification:\r\n\r\n* libgpuarray is obviously tightly coupled with Theano, but is it intended to be used by other packages?\r\n\r\n* Do you intend to accept external pull requests? Bug fixes or actual features?\r\n\r\n* The documentation says: \"we need a NumPy ndarray on the GPU\". But in the default \"GpuArray\" you lack even the basics, such as addition, instead referencing users to compiling their own `ElemwiseKernel` because such methods would be un-optimized. Is the intent that libgpuarray should be a drop in for numpy, or is it intended to only support an optimized subset of it?\r\n\r\n* Compilation times are currently great, but the payoff is that barely any functions are pre-compiled. Do you intend to ship libgpuarray with the standard ufuncs (`add`, `exp`, etc) compiled, or should we do that in our own library?"},"comment":{"url":"https://api.github.com/repos/Theano/libgpuarray/issues/comments/188874379","html_url":"https://github.com/Theano/libgpuarray/issues/126#issuecomment-188874379","issue_url":"https://api.github.com/repos/Theano/libgpuarray/issues/126","id":188874379,"user":{"login":"abergeron","id":1002504,"avatar_url":"https://avatars.githubusercontent.com/u/1002504?v=3","gravatar_id":"","url":"https://api.github.com/users/abergeron","html_url":"https://github.com/abergeron","followers_url":"https://api.github.com/users/abergeron/followers","following_url":"https://api.github.com/users/abergeron/following{/other_user}","gists_url":"https://api.github.com/users/abergeron/gists{/gist_id}","starred_url":"https://api.github.com/users/abergeron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abergeron/subscriptions","organizations_url":"https://api.github.com/users/abergeron/orgs","repos_url":"https://api.github.com/users/abergeron/repos","events_url":"https://api.github.com/users/abergeron/events{/privacy}","received_events_url":"https://api.github.com/users/abergeron/received_events","type":"User","site_admin":false},"created_at":"2016-02-25T16:51:28Z","updated_at":"2016-02-25T16:51:28Z","body":"I'm not sure if it will be merged.\r\n\r\nOn one hand it would be slightly faster to have the functionality in C, but on the other hand, doing elementwise operations one by one is always going to be very slow on GPUs.  So it is almost always a better choice to build a specific kernel for what you need.\r\n\r\nAlso, there is the hurdle of generating kernels from C which is not super easy."}}