Package com.yahoo.tensor.functions
Class ReduceJoin<NAMETYPE extends Name>
java.lang.Object
com.yahoo.tensor.functions.TensorFunction<NAMETYPE>
com.yahoo.tensor.functions.CompositeTensorFunction<NAMETYPE>
com.yahoo.tensor.functions.ReduceJoin<NAMETYPE>
An optimization for tensor expressions where a join immediately follows a
reduce. Evaluating this as one operation is significantly more efficient
than evaluating each separately.
This implementation optimizes the case where the reduce is done on the same
dimensions as the join. A particularly efficient evaluation is done if there
is one common dimension that is joined and reduced on, which is a common
case as it covers vector and matrix like multiplications.
- Author:
- lesters
-
Constructor Summary
ConstructorsConstructorDescriptionReduceJoin(Reduce<NAMETYPE> reduce, Join<NAMETYPE> join) ReduceJoin(TensorFunction<NAMETYPE> argumentA, TensorFunction<NAMETYPE> argumentB, DoubleBinaryOperator combinator, Reduce.Aggregator aggregator, List<String> dimensions) -
Method Summary
Modifier and TypeMethodDescriptionReturns the function arguments of this node in the order they are appliedbooleancanOptimize(Tensor a, Tensor b) Tests whether or not the reduce is over the join dimensions.final Tensorevaluate(EvaluationContext<NAMETYPE> context) Evaluates this by first converting it to a primitive functioninthashCode()Returns a hashcode computed from the data in thisTranslate this function - and all of its arguments recursively - to a tree of primitive functions only.toString(ToStringContext<NAMETYPE> context) Return a string representation of this context.withArguments(List<TensorFunction<NAMETYPE>> arguments) Returns a copy of this tensor function with the arguments replaced by the given list of arguments.Methods inherited from class com.yahoo.tensor.functions.CompositeTensorFunction
typeMethods inherited from class com.yahoo.tensor.functions.TensorFunction
asScalarFunction, evaluate, toString, withTransformedFunctions
-
Constructor Details
-
ReduceJoin
-
ReduceJoin
public ReduceJoin(TensorFunction<NAMETYPE> argumentA, TensorFunction<NAMETYPE> argumentB, DoubleBinaryOperator combinator, Reduce.Aggregator aggregator, List<String> dimensions)
-
-
Method Details
-
arguments
Description copied from class:TensorFunctionReturns the function arguments of this node in the order they are applied- Specified by:
argumentsin classTensorFunction<NAMETYPE extends Name>
-
withArguments
Description copied from class:TensorFunctionReturns a copy of this tensor function with the arguments replaced by the given list of arguments.- Specified by:
withArgumentsin classTensorFunction<NAMETYPE extends Name>
-
toPrimitive
Description copied from class:TensorFunctionTranslate this function - and all of its arguments recursively - to a tree of primitive functions only.- Specified by:
toPrimitivein classTensorFunction<NAMETYPE extends Name>- Returns:
- a tree of primitive functions implementing this
-
evaluate
Description copied from class:CompositeTensorFunctionEvaluates this by first converting it to a primitive function- Overrides:
evaluatein classCompositeTensorFunction<NAMETYPE extends Name>- Parameters:
context- a context which must be passed to all nested functions when evaluating
-
canOptimize
Tests whether or not the reduce is over the join dimensions. The remaining logic in this class assumes this to be true. If no dimensions are given, the join must be on all tensor dimensions.- Returns:
trueif the implementation can optimize evaluation given the two tensors.
-
toString
Description copied from class:TensorFunctionReturn a string representation of this context.- Specified by:
toStringin classTensorFunction<NAMETYPE extends Name>- Parameters:
context- a context which must be passed to all nested functions when requesting the string value
-
hashCode
public int hashCode()Description copied from class:TensorFunctionReturns a hashcode computed from the data in this- Specified by:
hashCodein classTensorFunction<NAMETYPE extends Name>
-