Package org.apache.sysds.runtime.instructions

# Class InstructionUtils

java.lang.Object
org.apache.sysds.runtime.instructions.InstructionUtils

public class InstructionUtils extends Object

## Constructor Summary

Constructors
Constructor
Description
`InstructionUtils()`

## Method Summary

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 InstructionType`
`getOOCType(String str)`
`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 operator
`static ScalarOperator`
`parseScalarBinaryOperator(String opcode, boolean arg1IsScalar, double constant)`
scalar-matrix operator
`static 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)`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### InstructionUtils

public InstructionUtils()

## Method Details

### 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

### stripThreadCount

public static String stripThreadCount(String str)

### getExecType

public static Types.ExecType getExecType(String str)

### getOpCode

public static String getOpCode(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)

### getOOCType

public static InstructionType getOOCType(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` - opcode
  `numThreads` - 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 opcode
  `arg1IsScalar` - ?
Returns:
  scalar operator

### parseScalarBinaryOperator

public static ScalarOperator parseScalarBinaryOperator(String opcode, boolean arg1IsScalar, double constant)
scalar-matrix operator

Parameters:
  `opcode` - the opcode
  `arg1IsScalar` - ?
  `constant` - ?
Returns:
  scalar operator

### parseExtendedBinaryOperator

public static BinaryOperator parseExtendedBinaryOperator(String opcode)

### parseScalarBinaryOperator

public static ScalarOperator parseScalarBinaryOperator(String opcode, boolean arg1IsScalar, double constant, int k)

### deriveAggregateOperatorOpcode

public static String deriveAggregateOperatorOpcode(String opcode)

### 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)

### parseGroupedAggOperator

public static Operator parseGroupedAggOperator(String fn, String other)

### createLiteralOperand

public static String createLiteralOperand(String val, Types.ValueType vt)

### createOperand

public static String createOperand(CPOperand operand)

### replaceOperand

public static String replaceOperand(String instStr, int operand, String newValue)

### removeOperand

public static String removeOperand(String instStr, int operand)

### replaceOperandName

public static String replaceOperandName(String instStr)

### 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

### concatStrings

public static String concatStrings(String... inputs)

### 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 request
  `varOldOut` - 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

### removeFEDOutputFlag

public static String removeFEDOutputFlag(String linst)
Removes federated output flag from the end of the instruction string if the flag is present.

Parameters:
  `linst` - instruction string
Returns:
  instruction string with no federated output flag