This is an automated email from the ASF dual-hosted git repository. mboehm7 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/systemml.git
The following commit(s) were added to refs/heads/master by this push: new b66a3c0 [SYSTEMDS-393] Fix convergence condition of connected components builtin b66a3c0 is described below commit b66a3c006ce6a3a888653e2d1accec479cc756fd Author: Matthias Boehm <mboe...@gmail.com> AuthorDate: Mon May 25 21:11:52 2020 +0200 [SYSTEMDS-393] Fix convergence condition of connected components builtin --- scripts/builtin/components.dml | 2 +- .../test/functions/builtin/BuiltinComponentsTest.java | 16 +++++++++++----- .../scripts/functions/builtin/ConnectedComponents.dml | 4 ++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/scripts/builtin/components.dml b/scripts/builtin/components.dml index f760a49..51d96db 100644 --- a/scripts/builtin/components.dml +++ b/scripts/builtin/components.dml @@ -40,7 +40,7 @@ m_components = function(Matrix[Double] G, Integer maxi = 0, Boolean verbose = TR iter = 1; # iterative computation of connected components - while( diff > 0 & (maxi==0 | maxi<=iter) ) { + while( diff > 0 & (maxi==0 | iter<=maxi) ) { u = max(rowMaxs(G * t(c)), c); diff = sum(u != c) c = u; # update assignment diff --git a/src/test/java/org/apache/sysds/test/functions/builtin/BuiltinComponentsTest.java b/src/test/java/org/apache/sysds/test/functions/builtin/BuiltinComponentsTest.java index e541f9d..8c1b05b 100644 --- a/src/test/java/org/apache/sysds/test/functions/builtin/BuiltinComponentsTest.java +++ b/src/test/java/org/apache/sysds/test/functions/builtin/BuiltinComponentsTest.java @@ -45,20 +45,25 @@ public class BuiltinComponentsTest extends AutomatedTestBase { @Test public void testConnectedComponents11CP() { - runConnectedComponentsTest(11, LopProperties.ExecType.CP); + runConnectedComponentsTest(11, 0, LopProperties.ExecType.CP); } @Test public void testConnectedComponents201CP() { - runConnectedComponentsTest(201, LopProperties.ExecType.CP); + runConnectedComponentsTest(201, 0, LopProperties.ExecType.CP); } @Test public void testConnectedComponents2001CP() { - runConnectedComponentsTest(2001, LopProperties.ExecType.CP); + runConnectedComponentsTest(2001, 0, LopProperties.ExecType.CP); + } + + @Test + public void testConnectedComponents11Maxi100CP() { + runConnectedComponentsTest(11, 100, LopProperties.ExecType.CP); } - private void runConnectedComponentsTest(int numVertices, ExecType instType) + private void runConnectedComponentsTest(int numVertices, int maxi, ExecType instType) { Types.ExecMode platformOld = setExecMode(instType); @@ -68,7 +73,8 @@ public class BuiltinComponentsTest extends AutomatedTestBase { String HOME = SCRIPT_DIR + TEST_DIR; fullDMLScriptName = HOME + TEST_NAME + ".dml"; - programArgs = new String[]{ "-args", input("X"), output("R")}; + programArgs = new String[]{ "-args", + input("X"), String.valueOf(maxi), output("R")}; //generate actual dataset (3 components) double[][] X = new double[numVertices-3][2]; diff --git a/src/test/scripts/functions/builtin/ConnectedComponents.dml b/src/test/scripts/functions/builtin/ConnectedComponents.dml index 0c6fbe7..56403a8 100644 --- a/src/test/scripts/functions/builtin/ConnectedComponents.dml +++ b/src/test/scripts/functions/builtin/ConnectedComponents.dml @@ -23,6 +23,6 @@ X = read($1) n = max(X); G = table(X[,1], X[, 2], n, n) G = G + t(G); #symmetry -C = components(G=G, verbose=FALSE) +C = components(G=G, maxi=$2, verbose=FALSE) -write(C, $2) +write(C, $3)