Class InstructionUtils
- java.lang.Object
 - 
- org.apache.sysds.runtime.instructions.InstructionUtils
 
 
- 
public class InstructionUtils extends Object
 
- 
- 
Constructor Summary
Constructors Constructor Description InstructionUtils() 
- 
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static intcheckNumFields(String[] parts, int expected)static intcheckNumFields(String[] parts, int... expected)static intcheckNumFields(String[] parts, int expected1, int expected2)static intcheckNumFields(String str, int expected)static intcheckNumFields(String str, int... expected)static intcheckNumFields(String str, int expected1, int expected2)static StringconcatOperandParts(String... inputs)Concat the input parts with the value type delimiter.static StringconcatOperands(String... inputs)Concat the inputs as operands to generate the instruction string.static StringconcatOperands(StringBuilder sb, String... inputs)static StringconcatStrings(String... inputs)static StringconstructBinaryInstString(String instString, String opcode, CPOperand op1, CPOperand op2, CPOperand out)static StringconstructTernaryString(String instString, CPOperand op1, CPOperand op2, CPOperand op3, CPOperand out)static StringconstructUnaryInstString(String instString, String opcode, CPOperand op1, CPOperand out)static StringcreateLiteralOperand(String val, Types.ValueType vt)static StringcreateOperand(CPOperand operand)static Types.CorrectionLocationTypederiveAggregateOperatorCorrectionLocation(String opcode)static StringderiveAggregateOperatorOpcode(String opcode)static Types.DirectiongetAggDirection(String opcode)static Types.AggOpgetAggOp(String opcode)static InstructionTypegetCPType(String str)static InstructionTypegetCPTypeByOpcode(String opcode)static Types.ExecTypegetExecType(String str)static InstructionTypegetFEDType(String str)static GPUInstruction.GPUINSTRUCTION_TYPEgetGPUType(String str)static String[]getInstructionParts(String str)Given an instruction string, strip-off the execution type and return opcode and all input/output operands WITHOUT their data/value type.static String[]getInstructionPartsWithValueType(String str)Given an instruction string, this function strips-off the execution type (CP or SPARK) and returns the remaining parts, which include the opcode as well as the input and output operands.static AggregateBinaryOperatorgetMatMultOperator(int k)static StringgetOpCode(String str)static InstructionTypegetSPType(String str)static InstructionTypegetSPTypeByOpcode(String opcode)static StringBuildergetStringBuilder()static StringinstructionStringFEDPrepare(String inst, CPOperand varOldOut, long id, CPOperand[] varOldIn, long[] varNewIn, boolean rmFederatedOutput)Prepare instruction string for sending in a FederatedRequest as a CP instruction.static booleanisBuiltinFunction(String opcode)static booleanisDistQuaternaryOpcode(String opcode)static booleanisUnaryMetadata(String opcode)static AggregateOperatorparseAggregateOperator(String opcode, String corrLoc)static AggregateTernaryOperatorparseAggregateTernaryOperator(String opcode)static AggregateTernaryOperatorparseAggregateTernaryOperator(String opcode, int numThreads)static AggregateUnaryOperatorparseAggregateUnaryRowIndexOperator(String opcode, int numOutputs, int numThreads)static AggregateUnaryOperatorparseBasicAggregateUnaryOperator(String opcode)static AggregateUnaryOperatorparseBasicAggregateUnaryOperator(String opcode, int numThreads)Parse the given opcode into an aggregate unary operator.static AggregateUnaryOperatorparseBasicCumulativeAggregateUnaryOperator(UnaryOperator uop)static BinaryOperatorparseBinaryOperator(String opcode)static BinaryOperatorparseBinaryOperator(String opcode, int k)static MultiThreadedOperatorparseBinaryOrBuiltinOperator(String opcode, CPOperand in1, CPOperand in2)static AggregateUnaryOperatorparseCumulativeAggregateUnaryOperator(String opcode)static BinaryOperatorparseExtendedBinaryOperator(String opcode)static OperatorparseExtendedBinaryOrBuiltinOperator(String opcode, CPOperand in1, CPOperand in2)static OperatorparseGroupedAggOperator(String fn, String other)static ScalarOperatorparseScalarBinaryOperator(String opcode, boolean arg1IsScalar)scalar-matrix operatorstatic ScalarOperatorparseScalarBinaryOperator(String opcode, boolean arg1IsScalar, double constant)scalar-matrix operatorstatic ScalarOperatorparseScalarBinaryOperator(String opcode, boolean arg1IsScalar, double constant, int k)static TernaryOperatorparseTernaryOperator(String opcode)static TernaryOperatorparseTernaryOperator(String opcode, int numThreads)static UnaryOperatorparseUnaryOperator(String opcode)static UnaryOperatorparseUnaryOperator(String opcode, int k)static StringremoveFEDOutputFlag(String linst)Removes federated output flag from the end of the instruction string if the flag is present.static StringremoveOperand(String instStr, int operand)static StringreplaceOperand(String instStr, int operand, String newValue)static StringreplaceOperandName(String instStr)static StringstripThreadCount(String str) 
 - 
 
- 
- 
Method Detail
- 
getStringBuilder
public static StringBuilder getStringBuilder()
 
- 
checkNumFields
public static int checkNumFields(String str, int expected)
 
- 
checkNumFields
public static int checkNumFields(String[] parts, int expected)
 
- 
checkNumFields
public static int checkNumFields(String[] parts, int expected1, int expected2)
 
- 
checkNumFields
public static int checkNumFields(String[] parts, int... expected)
 
- 
checkNumFields
public static int checkNumFields(String str, int... expected)
 
- 
checkNumFields
public static int checkNumFields(String str, int expected1, int expected2)
 
- 
getInstructionParts
public static String[] getInstructionParts(String str)
Given an instruction string, strip-off the execution type and return opcode and all input/output operands WITHOUT their data/value type. i.e., ret.length = parts.length-1 (-1 for execution type)- Parameters:
 str- instruction string- Returns:
 - instruction parts as string array
 
 
- 
getInstructionPartsWithValueType
public static String[] getInstructionPartsWithValueType(String str)
Given an instruction string, this function strips-off the execution type (CP or SPARK) and returns the remaining parts, which include the opcode as well as the input and output operands. Each returned part will have the datatype and valuetype associated with the operand. This function is invoked mainly for parsing CPInstructions.- Parameters:
 str- instruction string- Returns:
 - instruction parts as string array
 
 
- 
getExecType
public static Types.ExecType getExecType(String str)
 
- 
getSPType
public static InstructionType getSPType(String str)
 
- 
getCPType
public static InstructionType getCPType(String str)
 
- 
getSPTypeByOpcode
public static InstructionType getSPTypeByOpcode(String opcode)
 
- 
getCPTypeByOpcode
public static InstructionType getCPTypeByOpcode(String opcode)
 
- 
getGPUType
public static GPUInstruction.GPUINSTRUCTION_TYPE getGPUType(String str)
 
- 
getFEDType
public static InstructionType getFEDType(String str)
 
- 
isBuiltinFunction
public static boolean isBuiltinFunction(String opcode)
 
- 
isUnaryMetadata
public static boolean isUnaryMetadata(String opcode)
 
- 
parseBasicAggregateUnaryOperator
public static AggregateUnaryOperator parseBasicAggregateUnaryOperator(String opcode)
 
- 
parseBasicAggregateUnaryOperator
public static AggregateUnaryOperator parseBasicAggregateUnaryOperator(String opcode, int numThreads)
Parse the given opcode into an aggregate unary operator.- Parameters:
 opcode- opcodenumThreads- number of threads- Returns:
 - Parsed aggregate unary operator object. Caller must handle possible null return value.
 
 
- 
parseAggregateUnaryRowIndexOperator
public static AggregateUnaryOperator parseAggregateUnaryRowIndexOperator(String opcode, int numOutputs, int numThreads)
 
- 
parseAggregateTernaryOperator
public static AggregateTernaryOperator parseAggregateTernaryOperator(String opcode)
 
- 
parseAggregateTernaryOperator
public static AggregateTernaryOperator parseAggregateTernaryOperator(String opcode, int numThreads)
 
- 
parseAggregateOperator
public static AggregateOperator parseAggregateOperator(String opcode, String corrLoc)
 
- 
parseBasicCumulativeAggregateUnaryOperator
public static AggregateUnaryOperator parseBasicCumulativeAggregateUnaryOperator(UnaryOperator uop)
 
- 
parseCumulativeAggregateUnaryOperator
public static AggregateUnaryOperator parseCumulativeAggregateUnaryOperator(String opcode)
 
- 
parseUnaryOperator
public static UnaryOperator parseUnaryOperator(String opcode)
 
- 
parseUnaryOperator
public static UnaryOperator parseUnaryOperator(String opcode, int k)
 
- 
parseBinaryOrBuiltinOperator
public static MultiThreadedOperator parseBinaryOrBuiltinOperator(String opcode, CPOperand in1, CPOperand in2)
 
- 
parseExtendedBinaryOrBuiltinOperator
public static Operator parseExtendedBinaryOrBuiltinOperator(String opcode, CPOperand in1, CPOperand in2)
 
- 
parseBinaryOperator
public static BinaryOperator parseBinaryOperator(String opcode, int k)
 
- 
parseBinaryOperator
public static BinaryOperator parseBinaryOperator(String opcode)
 
- 
parseTernaryOperator
public static TernaryOperator parseTernaryOperator(String opcode)
 
- 
parseTernaryOperator
public static TernaryOperator parseTernaryOperator(String opcode, int numThreads)
 
- 
parseScalarBinaryOperator
public static ScalarOperator parseScalarBinaryOperator(String opcode, boolean arg1IsScalar)
scalar-matrix operator- Parameters:
 opcode- the opcodearg1IsScalar- ?- Returns:
 - scalar operator
 
 
- 
parseScalarBinaryOperator
public static ScalarOperator parseScalarBinaryOperator(String opcode, boolean arg1IsScalar, double constant)
scalar-matrix operator- Parameters:
 opcode- the opcodearg1IsScalar- ?constant- ?- Returns:
 - scalar operator
 
 
- 
parseExtendedBinaryOperator
public static BinaryOperator parseExtendedBinaryOperator(String opcode)
 
- 
parseScalarBinaryOperator
public static ScalarOperator parseScalarBinaryOperator(String opcode, boolean arg1IsScalar, double constant, int k)
 
- 
getAggOp
public static Types.AggOp getAggOp(String opcode)
 
- 
getAggDirection
public static Types.Direction getAggDirection(String opcode)
 
- 
deriveAggregateOperatorCorrectionLocation
public static Types.CorrectionLocationType deriveAggregateOperatorCorrectionLocation(String opcode)
 
- 
isDistQuaternaryOpcode
public static boolean isDistQuaternaryOpcode(String opcode)
 
- 
getMatMultOperator
public static AggregateBinaryOperator getMatMultOperator(int k)
 
- 
createLiteralOperand
public static String createLiteralOperand(String val, Types.ValueType vt)
 
- 
concatOperands
public static String concatOperands(String... inputs)
Concat the inputs as operands to generate the instruction string. The inputs are separated by the operand delimiter and appended using a ThreadLocal StringBuilder.- Parameters:
 inputs- operand inputs given as strings- Returns:
 - the instruction string with the given inputs concatenated
 
 
- 
concatOperands
public static String concatOperands(StringBuilder sb, String... inputs)
 
- 
concatOperandParts
public static String concatOperandParts(String... inputs)
Concat the input parts with the value type delimiter.- Parameters:
 inputs- input operand parts as strings- Returns:
 - concatenated input parts
 
 
- 
constructTernaryString
public static String constructTernaryString(String instString, CPOperand op1, CPOperand op2, CPOperand op3, CPOperand out)
 
- 
constructBinaryInstString
public static String constructBinaryInstString(String instString, String opcode, CPOperand op1, CPOperand op2, CPOperand out)
 
- 
constructUnaryInstString
public static String constructUnaryInstString(String instString, String opcode, CPOperand op1, CPOperand out)
 
- 
instructionStringFEDPrepare
public static String instructionStringFEDPrepare(String inst, CPOperand varOldOut, long id, CPOperand[] varOldIn, long[] varNewIn, boolean rmFederatedOutput)
Prepare instruction string for sending in a FederatedRequest as a CP instruction. This involves replacing the coordinator operand names with the worker operand names, changing the execution type, and removing the federated output flag if necessary.- Parameters:
 inst- instruction string to prepare for federated requestvarOldOut- current output operand (to be replaced)id- new output operand (always a number)varOldIn- current input operand (to be replaced)varNewIn- new input operand names (always numbers)rmFederatedOutput- remove federated output flag- Returns:
 - instruction string prepared for federated request
 
 
 - 
 
 -