[ https://issues.apache.org/jira/browse/SYSTEMML-652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15260484#comment-15260484 ]
Mike Dusenberry edited comment on SYSTEMML-652 at 4/27/16 5:04 PM: ------------------------------------------------------------------- [~mboehm7] Yeah I encountered this with the latest master yesterday. Thanks for looking into it! I definitely think we need to allow for function calls in expressions, and I think we also need to place more focus on the integration of functions with the rest of the optimizer - i.e. to avoid bugs such as this one, as well as to apply valid rewrites such as the update-in-place in SYSTEMML-633 to functions. Otherwise, it makes it quite difficult to build libraries that have any reasonable performance, and I think that hurts the project and the idea of declarative ML overall. was (Author: mwdus...@us.ibm.com): [~mboehm7], yeah I encountered this with the latest master yesterday. Glad that the problem was determined. I definitely think we need to allow for function calls in expressions, and I think we also need to place more focus on the integration of functions with the rest of the optimizer - i.e. to avoid bugs such as this one, as well as to apply valid rewrites such as the update-in-place in SYSTEMML-633 to functions. Otherwise, it makes it quite difficult to build libraries that have any reasonable performance, and I think that hurts the project and the idea of declarative ML overall. > Left-Indexing With Result of DML Function Changes Matrix Size > ------------------------------------------------------------- > > Key: SYSTEMML-652 > URL: https://issues.apache.org/jira/browse/SYSTEMML-652 > Project: SystemML > Issue Type: Bug > Components: Compiler > Affects Versions: SystemML 0.9, SystemML 0.10 > Reporter: Mike Dusenberry > > I've found a bug in which assigning the result of a DML function to a portion > of a matrix with left-indexing results in the left-hand matrix being reduced > in size dimensionally. This bug was encountered while working on the deep > learning DML library, and the following simplified example aims to provide a > simple, reproducible example. > Given the following code, > {code} > N = 3 > M = 5 > forward = function(matrix[double] X) return (matrix[double] out) { > out = 1 / (1 + exp(-X)) > } > X = rand(rows=N, cols=M) > X[,1:2] = forward(X[,1:2]) > print("X1: " + nrow(X) + "x" + ncol(X)) > if(1==1){} > X = rand(rows=N, cols=M) > temp = forward(X[,1:2]) > X[,1:2] = temp > print("X2: " + nrow(X) + "x" + ncol(X)) > if(1==1){} > print("") > {code} > , notice that {{X}} should always be a {{3x5}} matrix, as both cases are > equivalent. However, in the first case, {{X}} is truncated to a {{3x2}} > matrix: > {code} > X1: 3x2 > X2: 3x5 > {code} > Note: The {{if(1==1){}}} statements are included because otherwise the print > statements are executed out of order. -- This message was sent by Atlassian JIRA (v6.3.4#6332)