You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@systemml.apache.org by "Felix Schüler (JIRA)" <ji...@apache.org> on 2016/12/09 23:54:58 UTC

[jira] [Created] (SYSTEMML-1150) Incorrect dimension mismatch when indexing with loop-variable

Felix Schüler created SYSTEMML-1150:
---------------------------------------

             Summary: Incorrect dimension mismatch when indexing with loop-variable
                 Key: SYSTEMML-1150
                 URL: https://issues.apache.org/jira/browse/SYSTEMML-1150
             Project: SystemML
          Issue Type: Bug
         Environment: Standalone mode
            Reporter: Felix Schüler


{code}
A = matrix(2.0, rows=10, cols=10)

n = nrow(A)
s = 0.0

for (i in 1:n) {
  # print("[i,1]: " + i)
  s = s + as.scalar(A[i,1])
}
{code}

This code fails with the below exception. When uncommenting the print statement it works.

Exception:
{code}
16/12/09 15:49:50 ERROR api.DMLScript: Failed to execute DML script.
org.apache.sysml.runtime.DMLRuntimeException: org.apache.sysml.runtime.DMLRuntimeException: ERROR: Runtime error in program block generated from statement block between lines 9 and 9 -- Error evaluating instruction: CP°castdts°_mVar2·MATRIX·DOUBLE·false°_Var3·SCALAR·DOUBLE
	at org.apache.sysml.runtime.controlprogram.Program.execute(Program.java:152)
	at org.apache.sysml.api.DMLScript.execute(DMLScript.java:674)
	at org.apache.sysml.api.DMLScript.executeScript(DMLScript.java:354)
	at org.apache.sysml.api.DMLScript.main(DMLScript.java:199)
Caused by: org.apache.sysml.runtime.DMLRuntimeException: ERROR: Runtime error in program block generated from statement block between lines 9 and 9 -- Error evaluating instruction: CP°castdts°_mVar2·MATRIX·DOUBLE·false°_Var3·SCALAR·DOUBLE
	at org.apache.sysml.runtime.controlprogram.ProgramBlock.executeSingleInstruction(ProgramBlock.java:335)
	at org.apache.sysml.runtime.controlprogram.ProgramBlock.executeInstructions(ProgramBlock.java:224)
	at org.apache.sysml.runtime.controlprogram.ProgramBlock.execute(ProgramBlock.java:168)
	at org.apache.sysml.runtime.controlprogram.Program.execute(Program.java:145)
	... 3 more
Caused by: org.apache.sysml.runtime.DMLRuntimeException: Dimension mismatch - unable to cast matrix '_mVar2' of dimension (10 x 1) to scalar.
	at org.apache.sysml.runtime.instructions.cp.VariableCPInstruction.processInstruction(VariableCPInstruction.java:544)
	at org.apache.sysml.runtime.controlprogram.ProgramBlock.executeSingleInstruction(ProgramBlock.java:305)
	... 6 more
Exception in thread "main" org.apache.sysml.api.DMLException: org.apache.sysml.runtime.DMLRuntimeException: org.apache.sysml.runtime.DMLRuntimeException: ERROR: Runtime error in program block generated from statement block between lines 9 and 9 -- Error evaluating instruction: CP°castdts°_mVar2·MATRIX·DOUBLE·false°_Var3·SCALAR·DOUBLE
	at org.apache.sysml.api.DMLScript.executeScript(DMLScript.java:368)
	at org.apache.sysml.api.DMLScript.main(DMLScript.java:199)
Caused by: org.apache.sysml.runtime.DMLRuntimeException: org.apache.sysml.runtime.DMLRuntimeException: ERROR: Runtime error in program block generated from statement block between lines 9 and 9 -- Error evaluating instruction: CP°castdts°_mVar2·MATRIX·DOUBLE·false°_Var3·SCALAR·DOUBLE
	at org.apache.sysml.runtime.controlprogram.Program.execute(Program.java:152)
	at org.apache.sysml.api.DMLScript.execute(DMLScript.java:674)
	at org.apache.sysml.api.DMLScript.executeScript(DMLScript.java:354)
	... 1 more
Caused by: org.apache.sysml.runtime.DMLRuntimeException: ERROR: Runtime error in program block generated from statement block between lines 9 and 9 -- Error evaluating instruction: CP°castdts°_mVar2·MATRIX·DOUBLE·false°_Var3·SCALAR·DOUBLE
	at org.apache.sysml.runtime.controlprogram.ProgramBlock.executeSingleInstruction(ProgramBlock.java:335)
	at org.apache.sysml.runtime.controlprogram.ProgramBlock.executeInstructions(ProgramBlock.java:224)
	at org.apache.sysml.runtime.controlprogram.ProgramBlock.execute(ProgramBlock.java:168)
	at org.apache.sysml.runtime.controlprogram.Program.execute(Program.java:145)
	... 3 more
Caused by: org.apache.sysml.runtime.DMLRuntimeException: Dimension mismatch - unable to cast matrix '_mVar2' of dimension (10 x 1) to scalar.
	at org.apache.sysml.runtime.instructions.cp.VariableCPInstruction.processInstruction(VariableCPInstruction.java:544)
	at org.apache.sysml.runtime.controlprogram.ProgramBlock.executeSingleInstruction(ProgramBlock.java:305)
	... 6 more
{code}

Plan for the failing version:
{code}
16/12/09 15:49:50 INFO api.DMLScript: BEGIN DML run 12/09/2016 15:49:50
16/12/09 15:49:50 INFO api.DMLScript: EXPLAIN (RUNTIME):
# Memory Budget local/remote = 2832MB/140MB/140MB
# Degree of Parallelism (vcores) local/remote = 4/1/1
PROGRAM ( size CP/MR = 0/0 )
--MAIN PROGRAM
----GENERIC (lines 2-5) [recompile=false]
------CP createvar _mVar1 scratch_space//_p16109_127.0.1.1//_t0/temp1 true MATRIX binaryblock 10 10 1000 1000 100 copy
------CP rand 10 10 1000 1000 2.0 2.0 1.0 -1 uniform 1.0 4 _mVar1.MATRIX.DOUBLE
------CP assignvar 10.SCALAR.INT.true n.SCALAR.INT
------CP assignvar 0.0.SCALAR.DOUBLE.true s.SCALAR.DOUBLE
------CP cpvar _mVar1 A
------CP rmvar _mVar1
----GENERIC (lines 9-9) [recompile=false]
------CP createvar _mVar2 scratch_space//_p16109_127.0.1.1//_t0/temp2 true MATRIX binarycell 1 1 -1 -1 -1 copy
------CP rangeReIndex A.MATRIX.DOUBLE 1.SCALAR.INT.true 10.SCALAR.INT.true 1.SCALAR.INT.true 1.SCALAR.INT.true _mVar2.MATRIX.DOUBLE
------CP castdts _mVar2.MATRIX.DOUBLE.false _Var3.SCALAR.DOUBLE
------CP rmvar _mVar2
------CP + s.SCALAR.DOUBLE.false _Var3.SCALAR.DOUBLE.false _Var4.SCALAR.DOUBLE
------CP rmvar _Var3
------CP assignvar _Var4.SCALAR.DOUBLE.false s.SCALAR.DOUBLE
------CP rmvar _Var4

16/12/09 15:49:50 INFO api.DMLScript: SystemML Statistics:
Total execution time:		0.052 sec.
Number of executed MR Jobs:	0.

16/12/09 15:49:50 INFO api.DMLScript: END DML run 12/09/2016 15:49:50
{code}

Plan for the successful run:
{code}
16/12/09 15:50:27 INFO api.DMLScript: BEGIN DML run 12/09/2016 15:50:27
16/12/09 15:50:28 INFO api.DMLScript: EXPLAIN (RUNTIME):
# Memory Budget local/remote = 2832MB/140MB/140MB
# Degree of Parallelism (vcores) local/remote = 4/1/1
PROGRAM ( size CP/MR = 0/0 )
--MAIN PROGRAM
----GENERIC (lines 2-5) [recompile=false]
------CP createvar _mVar1 scratch_space//_p16143_127.0.1.1//_t0/temp1 true MATRIX binaryblock 10 10 1000 1000 100 copy
------CP rand 10 10 1000 1000 2.0 2.0 1.0 -1 uniform 1.0 4 _mVar1.MATRIX.DOUBLE
------CP assignvar 10.SCALAR.INT.true n.SCALAR.INT
------CP assignvar 0.0.SCALAR.DOUBLE.true s.SCALAR.DOUBLE
------CP cpvar _mVar1 A
------CP rmvar _mVar1
----FOR (lines 7-10)
------GENERIC (lines 8-9) [recompile=false]
--------CP + [i,1]: .SCALAR.STRING.true i.SCALAR.INT.false _Var2.SCALAR.STRING
--------CP createvar _mVar3 scratch_space//_p16143_127.0.1.1//_t0/temp2 true MATRIX binarycell 1 1 -1 -1 -1 copy
--------CP rangeReIndex A.MATRIX.DOUBLE i.SCALAR.INT.false i.SCALAR.INT.false 1.SCALAR.INT.true 1.SCALAR.INT.true _mVar3.MATRIX.DOUBLE
--------CP print _Var2.SCALAR.STRING.false _Var4.SCALAR.STRING
--------CP rmvar _Var2
--------CP castdts _mVar3.MATRIX.DOUBLE.false _Var5.SCALAR.DOUBLE
--------CP rmvar _mVar3
--------CP + s.SCALAR.DOUBLE.false _Var5.SCALAR.DOUBLE.false _Var6.SCALAR.DOUBLE
--------CP rmvar _Var5
--------CP assignvar _Var6.SCALAR.DOUBLE.false s.SCALAR.DOUBLE
--------CP rmvar _Var4
--------CP rmvar _Var6

16/12/09 15:50:28 INFO api.DMLScript: SystemML Statistics:
Total execution time:		0.064 sec.
Number of executed MR Jobs:	0.

16/12/09 15:50:28 INFO api.DMLScript: END DML run 12/09/2016 15:50:28

{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)