aboutsummaryrefslogtreecommitdiffstats
path: root/model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-07-04 07:40:07 -0700
committerJon Bratseth <bratseth@verizonmedia.com>2019-07-04 07:40:07 -0700
commitf0473187794b105ba8bf5ae32f99889dd2d909ad (patch)
tree441860870576fcaadf884e1f98dc2fb6f5c4d96c /model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java
parent1a8cc4d3d2076d6a25b92c1f08c716b356974f62 (diff)
Eliminate renames reuse
Diffstat (limited to 'model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java')
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java22
1 files changed, 8 insertions, 14 deletions
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java
index 10d39a43c61..e8291470054 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java
@@ -7,7 +7,6 @@ import ai.vespa.rankingexpression.importer.operations.Rename;
import com.yahoo.collections.ListMap;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -35,7 +34,7 @@ public class DimensionRenamer {
private final ListMap<String, Integer> variables = new ListMap<>();
private final ListMap<Arc, Constraint> constraints = new ListMap<>();
- /** The solution to this, or null if no solution is found (yet) */
+ /** The solution to this, or null if no solution is found yet */
private Map<String, Integer> renames = null;
public DimensionRenamer(IntermediateGraph graph) {
@@ -89,11 +88,8 @@ public class DimensionRenamer {
* @return the solution in the form of the renames to perform
*/
private Map<String, Integer> solve(int maxIterations) {
- Map<String, Integer> renames = new HashMap<>();
-
- // Todo: evaluate possible improved efficiency by using a heuristic such as min-conflicts
- boolean solved = NamingConstraintSolver.solve(variables, constraints, maxIterations, renames);
- if ( ! solved) {
+ Map<String, Integer> solution = NamingConstraintSolver.solve(variables, constraints, maxIterations);
+ if ( solution == null) {
IntermediateOperation operation = graph.operations().get("dense_out/MatMul");
if (operation != null && operation instanceof MatMul) {
IntermediateOperation arg0 = operation.inputs().get(0);
@@ -109,17 +105,15 @@ public class DimensionRenamer {
addDimension("renamed_0");
newOperation.addDimensionNameConstraints(this);
- renames.clear();
- solved = NamingConstraintSolver.solve(variables, constraints, maxIterations, renames);
+ solution = NamingConstraintSolver.solve(variables, constraints, maxIterations);
}
}
- if ( ! solved) {
- renames.clear();
+ if ( solution == null) {
ListMap<Arc, Constraint> hardConstraints = new ListMap<>();
boolean anyRemoved = copyHard(constraints, hardConstraints);
if (anyRemoved)
- solved = NamingConstraintSolver.solve(variables, hardConstraints, maxIterations, renames);
- if ( ! solved) {
+ solution = NamingConstraintSolver.solve(variables, hardConstraints, maxIterations);
+ if ( solution == null) {
throw new IllegalArgumentException("Could not find a dimension naming solution " +
"given constraints\n" + constraintsToString(hardConstraints));
}
@@ -130,7 +124,7 @@ public class DimensionRenamer {
// with the most remaining constraints, and inject a rename operation.
// Then run this algorithm again.
- return renames;
+ return solution;
}
/** Removes soft constraints and returns whether something was removed */