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 <[email protected]>
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)