final DeltaIterationBase<?, ?> iter = iterNode.getIterationContract(); this, true, iterNode.getParallelism(), defaultDataExchangeMode, closure); iterNode.setPartialSolution(solutionSetNode, worksetNode); iterNode.setNextPartialSolution(solutionSetDeltaNode, nextWorksetNode, defaultDataExchangeMode); StaticDynamicPathIdentifier pathIdentifier = new StaticDynamicPathIdentifier(iterNode.getCostWeight()); iterNode.acceptForStepFunction(pathIdentifier);
@Override public void computeUnclosedBranchStack() { if (this.openBranches != null) { return; } // IMPORTANT: First compute closed branches from the two inputs // we need to do this because the runtime iteration head effectively joins addClosedBranches(getFirstPredecessorNode().closedBranchingNodes); addClosedBranches(getSecondPredecessorNode().closedBranchingNodes); List<UnclosedBranchDescriptor> result1 = getFirstPredecessorNode().getBranchesForParent(getFirstIncomingConnection()); List<UnclosedBranchDescriptor> result2 = getSecondPredecessorNode().getBranchesForParent(getSecondIncomingConnection()); ArrayList<UnclosedBranchDescriptor> inputsMerged1 = new ArrayList<UnclosedBranchDescriptor>(); mergeLists(result1, result2, inputsMerged1, true); // this method also sets which branches are joined here (in the head) addClosedBranches(getSingleRootOfStepFunction().closedBranchingNodes); ArrayList<UnclosedBranchDescriptor> inputsMerged2 = new ArrayList<UnclosedBranchDescriptor>(); List<UnclosedBranchDescriptor> result3 = getSingleRootOfStepFunction().openBranches; mergeLists(inputsMerged1, result3, inputsMerged2, true); // handle the data flow branching for the broadcast inputs List<UnclosedBranchDescriptor> result = computeUnclosedBranchStackForBroadcastInputs(inputsMerged2); this.openBranches = (result == null || result.isEmpty()) ? Collections.<UnclosedBranchDescriptor>emptyList() : result; }
@Override public void computeOutputEstimates(DataStatistics statistics) { copyEstimates(this.iterationNode.getInitialSolutionSetPredecessorNode()); }
n = new WorksetIterationNode((DeltaIterationBase<?, ?>) c); p.setParallelism(containingIterationNode.getParallelism()); n = p; p.setParallelism(containingIterationNode.getParallelism()); n = p;
public OptimizerNode getInitialSolutionSetPredecessorNode() { return getFirstPredecessorNode(); }
headConfig.setSolutionSetUnmanaged(iteration.getIterationNode().getIterationContract().isSolutionSetUnManaged());
@Override public void computeUnclosedBranchStack() { if (this.openBranches != null) { return; } DagConnection solutionSetInput = this.iterationNode.getFirstIncomingConnection(); OptimizerNode solutionSetSource = solutionSetInput.getSource(); addClosedBranches(solutionSetSource.closedBranchingNodes); List<UnclosedBranchDescriptor> fromInput = solutionSetSource.getBranchesForParent(solutionSetInput); this.openBranches = (fromInput == null || fromInput.isEmpty()) ? Collections.<UnclosedBranchDescriptor>emptyList() : fromInput; } }
@Override public void computeOutputEstimates(DataStatistics statistics) { copyEstimates(this.iterationNode.getInitialWorksetPredecessorNode()); }
n = new WorksetIterationNode((DeltaIterationBase<?, ?>) c); p.setParallelism(containingIterationNode.getParallelism()); n = p; p.setParallelism(containingIterationNode.getParallelism()); n = p;
@Override protected void computeOperatorSpecificDefaultEstimates(DataStatistics statistics) { this.estimatedOutputSize = getFirstPredecessorNode().getEstimatedOutputSize(); this.estimatedNumRecords = getFirstPredecessorNode().getEstimatedNumRecords(); }
final int maxNumIterations = iterNode.getIterationNode().getIterationContract().getMaximumNumberOfIterations(); if (maxNumIterations < 1) { throw new CompilerException("Cannot create workset iteration with unspecified maximum number of iterations."); AggregatorRegistry aggs = iterNode.getIterationNode().getIterationContract().getAggregators(); Collection<AggregatorWithName<?>> allAggregators = aggs.getAllRegisteredAggregators();
@Override public void computeUnclosedBranchStack() { if (this.openBranches != null) { return; } DagConnection solutionSetInput = this.iterationNode.getFirstIncomingConnection(); OptimizerNode solutionSetSource = solutionSetInput.getSource(); addClosedBranches(solutionSetSource.closedBranchingNodes); List<UnclosedBranchDescriptor> fromInput = solutionSetSource.getBranchesForParent(solutionSetInput); this.openBranches = (fromInput == null || fromInput.isEmpty()) ? Collections.<UnclosedBranchDescriptor>emptyList() : fromInput; } }
@Override public void computeOutputEstimates(DataStatistics statistics) { copyEstimates(this.iterationNode.getInitialWorksetPredecessorNode()); }
@Override public void computeUnclosedBranchStack() { if (this.openBranches != null) { return; } // IMPORTANT: First compute closed branches from the two inputs // we need to do this because the runtime iteration head effectively joins addClosedBranches(getFirstPredecessorNode().closedBranchingNodes); addClosedBranches(getSecondPredecessorNode().closedBranchingNodes); List<UnclosedBranchDescriptor> result1 = getFirstPredecessorNode().getBranchesForParent(getFirstIncomingConnection()); List<UnclosedBranchDescriptor> result2 = getSecondPredecessorNode().getBranchesForParent(getSecondIncomingConnection()); ArrayList<UnclosedBranchDescriptor> inputsMerged1 = new ArrayList<UnclosedBranchDescriptor>(); mergeLists(result1, result2, inputsMerged1, true); // this method also sets which branches are joined here (in the head) addClosedBranches(getSingleRootOfStepFunction().closedBranchingNodes); ArrayList<UnclosedBranchDescriptor> inputsMerged2 = new ArrayList<UnclosedBranchDescriptor>(); List<UnclosedBranchDescriptor> result3 = getSingleRootOfStepFunction().openBranches; mergeLists(inputsMerged1, result3, inputsMerged2, true); // handle the data flow branching for the broadcast inputs List<UnclosedBranchDescriptor> result = computeUnclosedBranchStackForBroadcastInputs(inputsMerged2); this.openBranches = (result == null || result.isEmpty()) ? Collections.<UnclosedBranchDescriptor>emptyList() : result; }
final DeltaIterationBase<?, ?> iter = iterNode.getIterationContract(); this, true, iterNode.getParallelism(), defaultDataExchangeMode, closure); iterNode.setPartialSolution(solutionSetNode, worksetNode); iterNode.setNextPartialSolution(solutionSetDeltaNode, nextWorksetNode, defaultDataExchangeMode); StaticDynamicPathIdentifier pathIdentifier = new StaticDynamicPathIdentifier(iterNode.getCostWeight()); iterNode.acceptForStepFunction(pathIdentifier);
n = new WorksetIterationNode((DeltaIterationBase<?, ?>) c); p.setParallelism(containingIterationNode.getParallelism()); n = p; p.setParallelism(containingIterationNode.getParallelism()); n = p;
public OptimizerNode getInitialSolutionSetPredecessorNode() { return getFirstPredecessorNode(); }
headConfig.setSolutionSetUnmanaged(iteration.getIterationNode().getIterationContract().isSolutionSetUnManaged());
@Override public void computeUnclosedBranchStack() { if (this.openBranches != null) { return; } DagConnection solutionSetInput = this.iterationNode.getFirstIncomingConnection(); OptimizerNode solutionSetSource = solutionSetInput.getSource(); addClosedBranches(solutionSetSource.closedBranchingNodes); List<UnclosedBranchDescriptor> fromInput = solutionSetSource.getBranchesForParent(solutionSetInput); this.openBranches = (fromInput == null || fromInput.isEmpty()) ? Collections.<UnclosedBranchDescriptor>emptyList() : fromInput; } }
@Override public void computeOutputEstimates(DataStatistics statistics) { copyEstimates(this.iterationNode.getInitialWorksetPredecessorNode()); }