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 int
checkNumFields(String[] parts, int expected)
static int
checkNumFields(String[] parts, int... expected)
static int
checkNumFields(String[] parts, int expected1, int expected2)
static int
checkNumFields(String str, int expected)
static int
checkNumFields(String str, int... expected)
static int
checkNumFields(String str, int expected1, int expected2)
static String
concatOperandParts(String... inputs)
Concat the input parts with the value type delimiter.static String
concatOperands(String... inputs)
Concat the inputs as operands to generate the instruction string.static String
concatOperands(StringBuilder sb, String... inputs)
static String
concatStrings(String... inputs)
static String
constructBinaryInstString(String instString, String opcode, CPOperand op1, CPOperand op2, CPOperand out)
static String
constructTernaryString(String instString, CPOperand op1, CPOperand op2, CPOperand op3, CPOperand out)
static String
constructUnaryInstString(String instString, String opcode, CPOperand op1, CPOperand out)
static String
createLiteralOperand(String val, Types.ValueType vt)
static String
createOperand(CPOperand operand)
static Types.CorrectionLocationType
deriveAggregateOperatorCorrectionLocation(String opcode)
static String
deriveAggregateOperatorOpcode(String opcode)
static Types.Direction
getAggDirection(String opcode)
static Types.AggOp
getAggOp(String opcode)
static InstructionType
getCPType(String str)
static InstructionType
getCPTypeByOpcode(String opcode)
static Types.ExecType
getExecType(String str)
static InstructionType
getFEDType(String str)
static GPUInstruction.GPUINSTRUCTION_TYPE
getGPUType(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 AggregateBinaryOperator
getMatMultOperator(int k)
static String
getOpCode(String str)
static InstructionType
getSPType(String str)
static InstructionType
getSPTypeByOpcode(String opcode)
static StringBuilder
getStringBuilder()
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.static boolean
isBuiltinFunction(String opcode)
static boolean
isDistQuaternaryOpcode(String opcode)
static boolean
isUnaryMetadata(String opcode)
static AggregateOperator
parseAggregateOperator(String opcode, String corrLoc)
static AggregateTernaryOperator
parseAggregateTernaryOperator(String opcode)
static AggregateTernaryOperator
parseAggregateTernaryOperator(String opcode, int numThreads)
static AggregateUnaryOperator
parseAggregateUnaryRowIndexOperator(String opcode, int numOutputs, int numThreads)
static AggregateUnaryOperator
parseBasicAggregateUnaryOperator(String opcode)
static AggregateUnaryOperator
parseBasicAggregateUnaryOperator(String opcode, int numThreads)
Parse the given opcode into an aggregate unary operator.static AggregateUnaryOperator
parseBasicCumulativeAggregateUnaryOperator(UnaryOperator uop)
static BinaryOperator
parseBinaryOperator(String opcode)
static BinaryOperator
parseBinaryOperator(String opcode, int k)
static MultiThreadedOperator
parseBinaryOrBuiltinOperator(String opcode, CPOperand in1, CPOperand in2)
static AggregateUnaryOperator
parseCumulativeAggregateUnaryOperator(String opcode)
static BinaryOperator
parseExtendedBinaryOperator(String opcode)
static Operator
parseExtendedBinaryOrBuiltinOperator(String opcode, CPOperand in1, CPOperand in2)
static Operator
parseGroupedAggOperator(String fn, String other)
static ScalarOperator
parseScalarBinaryOperator(String opcode, boolean arg1IsScalar)
scalar-matrix operatorstatic ScalarOperator
parseScalarBinaryOperator(String opcode, boolean arg1IsScalar, double constant)
scalar-matrix operatorstatic ScalarOperator
parseScalarBinaryOperator(String opcode, boolean arg1IsScalar, double constant, int k)
static TernaryOperator
parseTernaryOperator(String opcode)
static TernaryOperator
parseTernaryOperator(String opcode, int numThreads)
static UnaryOperator
parseUnaryOperator(String opcode)
static UnaryOperator
parseUnaryOperator(String opcode, int k)
static String
removeFEDOutputFlag(String linst)
Removes federated output flag from the end of the instruction string if the flag is present.static String
removeOperand(String instStr, int operand)
static String
replaceOperand(String instStr, int operand, String newValue)
static String
replaceOperandName(String instStr)
static String
stripThreadCount(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
-
-