{"action":"created","issue":{"url":"https://api.github.com/repos/scalanlp/breeze/issues/360","labels_url":"https://api.github.com/repos/scalanlp/breeze/issues/360/labels{/name}","comments_url":"https://api.github.com/repos/scalanlp/breeze/issues/360/comments","events_url":"https://api.github.com/repos/scalanlp/breeze/issues/360/events","html_url":"https://github.com/scalanlp/breeze/issues/360","id":56174956,"number":360,"title":"Delay the computation until the last possible point.","user":{"login":"strelec","id":4661497,"avatar_url":"https://avatars.githubusercontent.com/u/4661497?v=3","gravatar_id":"","url":"https://api.github.com/users/strelec","html_url":"https://github.com/strelec","followers_url":"https://api.github.com/users/strelec/followers","following_url":"https://api.github.com/users/strelec/following{/other_user}","gists_url":"https://api.github.com/users/strelec/gists{/gist_id}","starred_url":"https://api.github.com/users/strelec/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/strelec/subscriptions","organizations_url":"https://api.github.com/users/strelec/orgs","repos_url":"https://api.github.com/users/strelec/repos","events_url":"https://api.github.com/users/strelec/events{/privacy}","received_events_url":"https://api.github.com/users/strelec/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-02-01T19:39:07Z","updated_at":"2015-02-20T08:27:51Z","closed_at":"2015-02-20T03:09:45Z","body":"We have been talking about this on the google groups, but I am reporting the enchantment here, too.\r\n\r\nAs we all know, BLAS contains many composite operations, like GEMM.\r\n\r\nC += A*B\r\n\r\nBut, as the library is currently designed, we are unable to take advantage of that, since each operation is performed eagerly, as soon as possible.\r\n\r\nThe right way to do it would be to keep the operations stored as an AST, performing some kind of smart analysis to keep it unevaluated until it is certain that the most specific BLAS function can be used.\r\n\r\nSince the overhead of the breeze library is already insignificant, the performance could be improved a lot this way."},"comment":{"url":"https://api.github.com/repos/scalanlp/breeze/issues/comments/75204574","html_url":"https://github.com/scalanlp/breeze/issues/360#issuecomment-75204574","issue_url":"https://api.github.com/repos/scalanlp/breeze/issues/360","id":75204574,"user":{"login":"strelec","id":4661497,"avatar_url":"https://avatars.githubusercontent.com/u/4661497?v=3","gravatar_id":"","url":"https://api.github.com/users/strelec","html_url":"https://github.com/strelec","followers_url":"https://api.github.com/users/strelec/followers","following_url":"https://api.github.com/users/strelec/following{/other_user}","gists_url":"https://api.github.com/users/strelec/gists{/gist_id}","starred_url":"https://api.github.com/users/strelec/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/strelec/subscriptions","organizations_url":"https://api.github.com/users/strelec/orgs","repos_url":"https://api.github.com/users/strelec/repos","events_url":"https://api.github.com/users/strelec/events{/privacy}","received_events_url":"https://api.github.com/users/strelec/received_events","type":"User","site_admin":false},"created_at":"2015-02-20T08:27:51Z","updated_at":"2015-02-20T08:27:51Z","body":"Actually, no.\r\n\r\nHis example can be made lazy by simply making c a \"lazy val\".\r\n\r\nIf he wants to make a matrix to be partially lazy (eg. able to be just partially computed, LazyMatrix), that is also a completely different beast.\r\n\r\nI do not agree. This is not a duplicate."}}