public class HopRewriteUtils extends Object
Constructor and Description |
---|
HopRewriteUtils() |
Modifier and Type | Method and Description |
---|---|
static void |
addChildReference(Hop parent,
Hop child) |
static void |
addChildReference(Hop parent,
Hop child,
int pos) |
static boolean |
alwaysRequiresReblock(Hop hop) |
static boolean |
checkAvgRowsGteCols(List<Hop> list) |
static boolean |
checkConsistentRows(List<Hop> list1,
List<Hop> list2) |
static boolean |
checkInputDataTypes(Hop hop,
Types.DataType... dt) |
static void |
cleanupUnreferenced(Hop... inputs) |
static int |
compareSize(Hop hop1,
Hop hop2)
Compares the size of outputs from hop1 and hop2, in terms of number
of matrix cells.
|
static boolean |
containsInput(Hop current,
Hop probe) |
static boolean |
containsOp(ArrayList<Hop> candidates,
Class<? extends Hop> clazz) |
static boolean |
containsSecondOrderBuiltin(ArrayList<Hop> roots) |
static boolean |
containsTransposeOperation(ArrayList<Hop> hops) |
static DataGenOp |
copyDataGenOp(DataGenOp inputGen,
double scale,
double shift)
Assumes that min and max are literal ops, needs to be checked from outside.
|
static void |
copyLineNumbers(Hop src,
Hop dest) |
static void |
copyLineNumbers(MatrixBlock mb,
Hop tread) |
static void |
copyLineNumbers(MatrixObject mo,
Hop tread) |
static AggUnaryOp |
createAggUnaryOp(Hop input,
String op) |
static AggUnaryOp |
createAggUnaryOp(Hop input,
Types.AggOp op,
Types.Direction dir) |
static BinaryOp |
createBinary(Hop input1,
Hop input2,
String op) |
static BinaryOp |
createBinary(Hop input1,
Hop input2,
Types.OpOp2 op) |
static BinaryOp |
createBinary(Hop input1,
Hop input2,
Types.OpOp2 op,
boolean outer) |
static BinaryOp |
createBinaryMinus(Hop input) |
static Hop |
createComputeNnz(Hop input) |
static Hop |
createDataGenOp(Hop rowInput,
boolean tRowInput,
Hop colInput,
boolean tColInput,
double value) |
static Hop |
createDataGenOp(Hop input,
double value) |
static Hop |
createDataGenOp(Hop rowInput,
Hop colInput,
double value) |
static Hop |
createDataGenOpByVal(ArrayList<LiteralOp> values,
long rows,
long cols) |
static Hop |
createDataGenOpByVal(Hop rowInput,
Hop colInput,
Hop dimsInput,
Types.DataType dt,
Types.ValueType vt,
double value) |
static DataOp |
createDataOp(String name,
Hop in,
Types.OpOpData type) |
static IndexingOp |
createIndexingOp(Hop input,
Hop rl,
Hop ru,
Hop cl,
Hop cu) |
static IndexingOp |
createIndexingOp(Hop input,
long rix,
long cix) |
static IndexingOp |
createIndexingOp(Hop input,
long rl,
long ru,
long cl,
long cu) |
static LeftIndexingOp |
createLeftIndexingOp(Hop lhs,
Hop rhs,
Hop rl,
Hop ru,
Hop cl,
Hop cu) |
static AggBinaryOp |
createMatrixMultiply(Hop left,
Hop right) |
static NaryOp |
createNary(Types.OpOpN op,
Hop... inputs) |
static ParameterizedBuiltinOp |
createParameterizedBuiltinOp(Hop input,
LinkedHashMap<String,Hop> args,
Types.ParamBuiltinOp op) |
static Hop |
createPartialTsmmCbind(Hop X,
Hop deltaX,
Hop tsmmIn1) |
static ReorgOp |
createReorg(ArrayList<Hop> inputs,
Types.ReOrgOp rop) |
static ReorgOp |
createReorg(Hop input,
String rop) |
static ReorgOp |
createReorg(Hop input,
Types.ReOrgOp rop) |
static Hop |
createScalarIndexing(Hop input,
long rix,
long cix) |
static DataGenOp |
createSeqDataGenOp(Hop input) |
static DataGenOp |
createSeqDataGenOp(Hop input,
boolean asc) |
static AggUnaryOp |
createSum(Hop input) |
static TernaryOp |
createTernary(Hop in1,
Hop in2,
Hop in3,
Hop in4,
Hop in5,
Types.OpOp3 op) |
static TernaryOp |
createTernary(Hop mleft,
Hop smid,
Hop mright,
String opcode) |
static TernaryOp |
createTernary(Hop mleft,
Hop smid,
Hop mright,
Types.OpOp3 op) |
static DataOp |
createTransientRead(String name,
Hop h) |
static DataOp |
createTransientRead(String name,
MatrixBlock mb) |
static DataOp |
createTransientRead(String name,
MatrixObject mo) |
static DataOp |
createTransientWrite(String name,
Hop in) |
static ReorgOp |
createTranspose(Hop input) |
static AggBinaryOp |
createTsmm(Hop input,
boolean left) |
static UnaryOp |
createUnary(Hop input,
String type) |
static UnaryOp |
createUnary(Hop input,
Types.OpOp1 type) |
static Hop |
createValueHop(Hop hop,
boolean row) |
static Hop |
getBasic1NSequenceMax(Hop hop) |
static boolean |
getBooleanValue(LiteralOp op) |
static boolean |
getBooleanValueSafe(LiteralOp op) |
static int |
getChildReferencePos(Hop parent,
Hop child) |
static Hop |
getDataGenOpConstantValue(Hop hop) |
static double |
getDoubleValue(LiteralOp op) |
static double |
getDoubleValueSafe(LiteralOp op) |
static long |
getIntValue(LiteralOp op)
Return the int value of a LiteralOp (as a long).
|
static long |
getIntValueSafe(LiteralOp op) |
static Hop |
getLargestInput(Hop hop) |
static long |
getMaxInputDim(DataCharacteristics[] dc,
boolean dim1) |
static long |
getMaxInputDim(Hop hop,
boolean dim1) |
static long |
getMaxNcolInput(Hop hop) |
static long |
getMaxNrowInput(Hop hop) |
static Hop |
getOtherInput(Hop hop,
Hop input) |
static ScalarObject |
getScalarObject(LiteralOp op) |
static long |
getSumValidInputDims(DataCharacteristics[] mc,
boolean dim1) |
static long |
getSumValidInputDims(Hop hop,
boolean dim1) |
static long |
getSumValidInputNnz(DataCharacteristics[] mc,
boolean worstcase) |
static long |
getSumValidInputNnz(Hop hop) |
static int |
getValidOpPos(Types.OpOp2 input,
Types.OpOp2... validTab) |
static boolean |
hasOnlyUnaryBinaryParents(Hop hop,
boolean disallowLhs) |
static boolean |
hasOnlyWriteParents(Hop hop,
boolean inclTransient,
boolean inclPersistent) |
static boolean |
hasValidInputDims(DataCharacteristics[] mc,
boolean dim1) |
static boolean |
hasValidInputDims(Hop hop,
boolean dim1) |
static boolean |
hasValidInputNnz(DataCharacteristics[] mc,
boolean worstcase) |
static boolean |
hasValidInputNnz(Hop hop) |
static boolean |
isAggUnaryOp(Hop hop,
Types.AggOp... op) |
static boolean |
isAggUnaryOp(Hop hop,
Types.AggOp op,
Types.Direction dir) |
static boolean |
isBasic1NSequence(Hop hop) |
static boolean |
isBasic1NSequence(Hop seq,
Hop input,
boolean row) |
static boolean |
isBasicN1Sequence(Hop hop) |
static boolean |
isBinary(Hop hop,
Types.OpOp2... types) |
static boolean |
isBinary(Hop hop,
Types.OpOp2 type) |
static boolean |
isBinary(Hop hop,
Types.OpOp2 type,
int maxParents) |
static boolean |
isBinaryMatrixColVectorOperation(Hop hop) |
static boolean |
isBinaryMatrixMatrixOperation(Hop hop) |
static boolean |
isBinaryMatrixMatrixOperationWithSharedInput(Hop hop) |
static boolean |
isBinaryMatrixScalar(Hop hop,
Types.OpOp2 type,
double val) |
static boolean |
isBinaryMatrixScalarOperation(Hop hop) |
static boolean |
isBinaryPPred(Hop hop) |
static boolean |
isBinarySparseSafe(Hop hop) |
static boolean |
isColumnRangeIndexing(IndexingOp hop) |
static boolean |
isColumnRightIndexing(Hop hop) |
static boolean |
isConsecutiveIndex(Hop index,
Hop index2) |
static boolean |
isData(Hop hop,
Types.OpOpData type) |
static boolean |
isDataGenOp(Hop hop,
Types.OpOpDG... ops) |
static boolean |
isDataGenOpWithConstantValue(Hop hop) |
static boolean |
isDataGenOpWithConstantValue(Hop hop,
double value) |
static boolean |
isDataGenOpWithLiteralInputs(Hop hop,
Types.OpOpDG... ops) |
static boolean |
isDataGenOpWithNonDeterminism(Hop hop) |
static boolean |
isDense(Hop hop) |
static boolean |
isDimsKnown(Hop hop) |
static boolean |
isDnn(Hop hop,
Types.OpOpDnn... types) |
static boolean |
isDnn(Hop hop,
Types.OpOpDnn type) |
static boolean |
isEmpty(Hop hop) |
static boolean |
isEqualMatrixSize(BinaryOp hop) |
static boolean |
isEqualSize(Hop hop1,
Hop... hops) |
static boolean |
isEqualSize(Hop hop1,
Hop hop2) |
static boolean |
isEqualValue(LiteralOp hop1,
LiteralOp hop2) |
static boolean |
isFullColumnIndexing(IndexingOp hop) |
static boolean |
isFullColumnIndexing(LeftIndexingOp hop) |
static boolean |
isFullRowIndexing(IndexingOp hop) |
static boolean |
isFullRowIndexing(LeftIndexingOp hop) |
static boolean |
isLastLevelStatementBlock(StatementBlock sb) |
static boolean |
isLiteralOfValue(Hop hop,
boolean val) |
static boolean |
isLiteralOfValue(Hop hop,
Double... val) |
static boolean |
isLiteralOfValue(Hop hop,
double val) |
static boolean |
isLiteralOfValue(Hop hop,
String val) |
static boolean |
isLoopStatementBlock(StatementBlock sb) |
static boolean |
isMatrixMultiply(Hop hop) |
static boolean |
isNary(Hop hop,
Types.OpOpN... types) |
static boolean |
isNary(Hop hop,
Types.OpOpN type) |
static boolean |
isNonZeroIndicator(Hop pred,
Hop hop) |
static boolean |
isNotMatrixVectorBinaryOperation(Hop hop) |
static boolean |
isOuterBinary(Hop hop) |
static boolean |
isOuterProductLikeMM(Hop hop) |
static boolean |
isParameterBuiltinOp(Hop hop,
Types.ParamBuiltinOp type) |
static boolean |
isRemoveEmpty(Hop hop) |
static boolean |
isRemoveEmpty(Hop hop,
boolean rows) |
static boolean |
isReorg(Hop hop,
Types.ReOrgOp... types) |
static boolean |
isReorg(Hop hop,
Types.ReOrgOp type) |
static boolean |
isScalarMatrixBinaryMult(Hop hop) |
static boolean |
isSingleBlock(Hop hop) |
static boolean |
isSingleBlock(Hop hop,
boolean cols)
Checks our BLOCKSIZE CONSTRAINT, w/ awareness of forced single node
execution mode.
|
static boolean |
isSizeExpressionOf(Hop size,
Hop input,
boolean row) |
static boolean |
isSparse(Hop hop) |
static boolean |
isSparse(Hop hop,
double threshold) |
static boolean |
isSum(Hop hop) |
static boolean |
isSumSq(Hop hop) |
static boolean |
isTernary(Hop hop,
Types.OpOp3... types) |
static boolean |
isTernary(Hop hop,
Types.OpOp3 type) |
static boolean |
isTransposeOfItself(Hop hop1,
Hop hop2) |
static boolean |
isTransposeOperation(Hop hop) |
static boolean |
isTransposeOperation(Hop hop,
int maxParents) |
static boolean |
isTsmm(Hop input) |
static boolean |
isTsmmInput(Hop input) |
static boolean |
isUnary(Hop hop,
Types.OpOp1... types) |
static boolean |
isUnary(Hop hop,
Types.OpOp1 type) |
static boolean |
isUnary(Hop hop,
Types.OpOp1 type,
int maxParents) |
static boolean |
isUnnecessaryRightIndexing(Hop hop) |
static boolean |
isValidOp(Types.AggOp input,
Types.AggOp... validTab) |
static boolean |
isValidOp(Types.OpOp1 input,
Types.OpOp1... validTab) |
static boolean |
isValidOp(Types.OpOp2 input,
Types.OpOp2... validTab) |
static boolean |
isValidOp(Types.ParamBuiltinOp input,
Types.ParamBuiltinOp... validTab) |
static boolean |
isValidOp(Types.ReOrgOp input,
Types.ReOrgOp... validTab) |
static boolean |
isValidOuterBinaryOp(Types.OpOp2 op) |
static boolean |
isValueTypeCast(Types.OpOp1 op) |
static boolean |
rContainsRead(Hop root,
String var,
boolean includeMetaOp) |
static void |
refreshOutputParameters(Hop hnew,
Hop hold) |
static void |
removeAllChildReferences(Hop parent) |
static void |
removeChildReference(Hop parent,
Hop child) |
static void |
removeChildReferenceByPos(Hop parent,
Hop child,
int posChild) |
static void |
replaceChildReference(Hop parent,
Hop inOld,
Hop inNew) |
static void |
replaceChildReference(Hop parent,
Hop inOld,
Hop inNew,
int pos) |
static void |
replaceChildReference(Hop parent,
Hop inOld,
Hop inNew,
int pos,
boolean refresh) |
static Hop |
rewireAllParentChildReferences(Hop hold,
Hop hnew)
Replace an old Hop with a replacement Hop.
|
static boolean |
rHasSimpleReadChain(Hop root,
String var) |
static void |
setOutputParameters(Hop hop,
long rlen,
long clen,
int blen,
long nnz) |
static void |
setOutputParametersForScalar(Hop hop) |
static void |
setUnoptimizedFunctionCalls(StatementBlock sb) |
static void |
updateHopCharacteristics(Hop hop,
int blen,
Hop src) |
static void |
updateHopCharacteristics(Hop hop,
int blen,
MemoTable memo,
Hop src) |
public static boolean isValueTypeCast(Types.OpOp1 op)
public static boolean getBooleanValue(LiteralOp op)
public static boolean getBooleanValueSafe(LiteralOp op)
public static double getDoubleValue(LiteralOp op)
public static double getDoubleValueSafe(LiteralOp op)
public static long getIntValue(LiteralOp op)
op
- literal operatorpublic static long getIntValueSafe(LiteralOp op)
public static boolean isLiteralOfValue(Hop hop, double val)
public static boolean isLiteralOfValue(Hop hop, boolean val)
public static ScalarObject getScalarObject(LiteralOp op)
public static void removeChildReferenceByPos(Hop parent, Hop child, int posChild)
public static void removeAllChildReferences(Hop parent)
public static Hop rewireAllParentChildReferences(Hop hold, Hop hnew)
hold
- To be replacedhnew
- The replacementpublic static void replaceChildReference(Hop parent, Hop inOld, Hop inNew, int pos)
public static void replaceChildReference(Hop parent, Hop inOld, Hop inNew, int pos, boolean refresh)
public static void cleanupUnreferenced(Hop... inputs)
public static DataGenOp copyDataGenOp(DataGenOp inputGen, double scale, double shift)
inputGen
- input data gen opscale
- the scaleshift
- the shiftpublic static Hop createDataGenOp(Hop rowInput, boolean tRowInput, Hop colInput, boolean tColInput, double value)
public static Hop createDataGenOpByVal(Hop rowInput, Hop colInput, Hop dimsInput, Types.DataType dt, Types.ValueType vt, double value)
public static Hop createDataGenOpByVal(ArrayList<LiteralOp> values, long rows, long cols)
public static boolean isDataGenOp(Hop hop, Types.OpOpDG... ops)
public static boolean isDataGenOpWithLiteralInputs(Hop hop, Types.OpOpDG... ops)
public static boolean isDataGenOpWithConstantValue(Hop hop)
public static boolean isDataGenOpWithConstantValue(Hop hop, double value)
public static boolean isDataGenOpWithNonDeterminism(Hop hop)
public static DataOp createTransientRead(String name, MatrixBlock mb)
public static DataOp createTransientRead(String name, MatrixObject mo)
public static DataOp createDataOp(String name, Hop in, Types.OpOpData type)
public static ReorgOp createReorg(Hop input, Types.ReOrgOp rop)
public static ReorgOp createReorg(ArrayList<Hop> inputs, Types.ReOrgOp rop)
public static UnaryOp createUnary(Hop input, Types.OpOp1 type)
public static BinaryOp createBinary(Hop input1, Hop input2, Types.OpOp2 op)
public static BinaryOp createBinary(Hop input1, Hop input2, Types.OpOp2 op, boolean outer)
public static AggUnaryOp createSum(Hop input)
public static AggUnaryOp createAggUnaryOp(Hop input, String op)
public static AggUnaryOp createAggUnaryOp(Hop input, Types.AggOp op, Types.Direction dir)
public static AggBinaryOp createTsmm(Hop input, boolean left)
public static AggBinaryOp createMatrixMultiply(Hop left, Hop right)
public static ParameterizedBuiltinOp createParameterizedBuiltinOp(Hop input, LinkedHashMap<String,Hop> args, Types.ParamBuiltinOp op)
public static IndexingOp createIndexingOp(Hop input, long rix, long cix)
public static IndexingOp createIndexingOp(Hop input, long rl, long ru, long cl, long cu)
public static IndexingOp createIndexingOp(Hop input, Hop rl, Hop ru, Hop cl, Hop cu)
public static LeftIndexingOp createLeftIndexingOp(Hop lhs, Hop rhs, Hop rl, Hop ru, Hop cl, Hop cu)
public static NaryOp createNary(Types.OpOpN op, Hop... inputs)
public static TernaryOp createTernary(Hop mleft, Hop smid, Hop mright, Types.OpOp3 op)
public static TernaryOp createTernary(Hop in1, Hop in2, Hop in3, Hop in4, Hop in5, Types.OpOp3 op)
public static void setOutputParameters(Hop hop, long rlen, long clen, int blen, long nnz)
public static void setOutputParametersForScalar(Hop hop)
public static void copyLineNumbers(MatrixBlock mb, Hop tread)
public static void copyLineNumbers(MatrixObject mo, Hop tread)
public static void updateHopCharacteristics(Hop hop, int blen, MemoTable memo, Hop src)
public static boolean isDimsKnown(Hop hop)
public static boolean isEmpty(Hop hop)
public static boolean isEqualMatrixSize(BinaryOp hop)
public static boolean isSingleBlock(Hop hop)
public static boolean isSingleBlock(Hop hop, boolean cols)
hop
- high-level operatorcols
- true if colspublic static boolean isOuterProductLikeMM(Hop hop)
public static boolean isOuterBinary(Hop hop)
public static boolean isValidOuterBinaryOp(Types.OpOp2 op)
public static boolean isSparse(Hop hop)
public static boolean isDense(Hop hop)
public static boolean isSparse(Hop hop, double threshold)
public static boolean isNotMatrixVectorBinaryOperation(Hop hop)
public static boolean isReorg(Hop hop, Types.ReOrgOp type)
public static boolean isReorg(Hop hop, Types.ReOrgOp... types)
public static boolean isTransposeOperation(Hop hop)
public static boolean isTransposeOperation(Hop hop, int maxParents)
public static boolean isTsmm(Hop input)
public static boolean isTsmmInput(Hop input)
public static boolean isBinary(Hop hop, Types.OpOp2 type)
public static boolean isBinary(Hop hop, Types.OpOp2... types)
public static boolean isBinary(Hop hop, Types.OpOp2 type, int maxParents)
public static boolean isBinaryPPred(Hop hop)
public static boolean isBinarySparseSafe(Hop hop)
public static boolean isBinaryMatrixScalarOperation(Hop hop)
public static boolean isBinaryMatrixMatrixOperation(Hop hop)
public static boolean isBinaryMatrixMatrixOperationWithSharedInput(Hop hop)
public static boolean isBinaryMatrixScalar(Hop hop, Types.OpOp2 type, double val)
public static boolean isTernary(Hop hop, Types.OpOp3 type)
public static boolean isTernary(Hop hop, Types.OpOp3... types)
public static boolean isData(Hop hop, Types.OpOpData type)
public static boolean isBinaryMatrixColVectorOperation(Hop hop)
public static boolean isUnary(Hop hop, Types.OpOp1 type)
public static boolean isUnary(Hop hop, Types.OpOp1 type, int maxParents)
public static boolean isUnary(Hop hop, Types.OpOp1... types)
public static boolean isMatrixMultiply(Hop hop)
public static boolean isAggUnaryOp(Hop hop, Types.AggOp op, Types.Direction dir)
public static boolean isAggUnaryOp(Hop hop, Types.AggOp... op)
public static boolean isSum(Hop hop)
public static boolean isSumSq(Hop hop)
public static boolean isParameterBuiltinOp(Hop hop, Types.ParamBuiltinOp type)
public static boolean isRemoveEmpty(Hop hop, boolean rows)
public static boolean isRemoveEmpty(Hop hop)
public static boolean isNary(Hop hop, Types.OpOpN type)
public static boolean isNary(Hop hop, Types.OpOpN... types)
public static boolean isDnn(Hop hop, Types.OpOpDnn type)
public static boolean isDnn(Hop hop, Types.OpOpDnn... types)
public static boolean checkInputDataTypes(Hop hop, Types.DataType... dt)
public static boolean isColumnRightIndexing(Hop hop)
public static boolean isFullColumnIndexing(LeftIndexingOp hop)
public static boolean isFullColumnIndexing(IndexingOp hop)
public static boolean isFullRowIndexing(LeftIndexingOp hop)
public static boolean isFullRowIndexing(IndexingOp hop)
public static boolean isColumnRangeIndexing(IndexingOp hop)
public static boolean isUnnecessaryRightIndexing(Hop hop)
public static boolean isScalarMatrixBinaryMult(Hop hop)
public static boolean isBasic1NSequence(Hop hop)
public static boolean isBasicN1Sequence(Hop hop)
public static boolean hasOnlyWriteParents(Hop hop, boolean inclTransient, boolean inclPersistent)
public static boolean hasOnlyUnaryBinaryParents(Hop hop, boolean disallowLhs)
public static boolean alwaysRequiresReblock(Hop hop)
public static boolean isValidOp(Types.AggOp input, Types.AggOp... validTab)
public static boolean isValidOp(Types.OpOp1 input, Types.OpOp1... validTab)
public static boolean isValidOp(Types.OpOp2 input, Types.OpOp2... validTab)
public static boolean isValidOp(Types.ReOrgOp input, Types.ReOrgOp... validTab)
public static boolean isValidOp(Types.ParamBuiltinOp input, Types.ParamBuiltinOp... validTab)
public static int getValidOpPos(Types.OpOp2 input, Types.OpOp2... validTab)
public static int compareSize(Hop hop1, Hop hop2)
hop1
- high-level operator 1hop2
- high-level operator 2public static boolean isLastLevelStatementBlock(StatementBlock sb)
public static boolean isLoopStatementBlock(StatementBlock sb)
public static long getMaxNrowInput(Hop hop)
public static long getMaxNcolInput(Hop hop)
public static long getMaxInputDim(Hop hop, boolean dim1)
public static long getSumValidInputDims(Hop hop, boolean dim1)
public static boolean hasValidInputDims(Hop hop, boolean dim1)
public static long getSumValidInputNnz(Hop hop)
public static boolean hasValidInputNnz(Hop hop)
public static long getMaxInputDim(DataCharacteristics[] dc, boolean dim1)
public static long getSumValidInputDims(DataCharacteristics[] mc, boolean dim1)
public static boolean hasValidInputDims(DataCharacteristics[] mc, boolean dim1)
public static long getSumValidInputNnz(DataCharacteristics[] mc, boolean worstcase)
public static boolean hasValidInputNnz(DataCharacteristics[] mc, boolean worstcase)
public static void setUnoptimizedFunctionCalls(StatementBlock sb)
Copyright © 2020 The Apache Software Foundation. All rights reserved.