Class MatrixIndexingSPInstruction
java.lang.Object
org.apache.sysds.runtime.instructions.Instruction
org.apache.sysds.runtime.instructions.spark.SPInstruction
org.apache.sysds.runtime.instructions.spark.ComputationSPInstruction
org.apache.sysds.runtime.instructions.spark.UnarySPInstruction
org.apache.sysds.runtime.instructions.spark.IndexingSPInstruction
org.apache.sysds.runtime.instructions.spark.MatrixIndexingSPInstruction
- All Implemented Interfaces:
LineageTraceable
This class implements the matrix indexing functionality inside CP.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.sysds.runtime.instructions.spark.SPInstruction
SPInstruction.SPTypeNested classes/interfaces inherited from class org.apache.sysds.runtime.instructions.Instruction
Instruction.IType -
Field Summary
Fields inherited from class org.apache.sysds.runtime.instructions.spark.ComputationSPInstruction
input1, input2, input3, outputFields inherited from class org.apache.sysds.runtime.instructions.Instruction
DATATYPE_PREFIX, FEDERATED_INST_PREFIX, GPU_INST_PREFIX, INSTRUCTION_DELIM, LITERAL_PREFIX, OOC_INST_PREFIX, OPERAND_DELIM, SP_INST_PREFIX, VALUETYPE_PREFIX -
Method Summary
Modifier and TypeMethodDescriptionorg.apache.commons.lang3.tuple.Pair<String,LineageItem> Obtain lineage trace of an instruction with a single output.static MatrixBlockinmemoryIndexing(org.apache.spark.api.java.JavaPairRDD<MatrixIndexes, MatrixBlock> in1, DataCharacteristics mcIn, DataCharacteristics mcOut, IndexRange ixrange) static booleanisMultiBlockLookup(org.apache.spark.api.java.JavaPairRDD<?, ?> in, DataCharacteristics mcIn, DataCharacteristics mcOut, IndexRange ixrange) Indicates if the given index range and input matrix exhibit the following properties: (1) existing hash partitioner, (2) out-of-core input matrix (larger than aggregated memory), (3) aligned indexing range (which does not required aggregation), and (4) the output fits twice in memory (in order to collect the result).static booleanisSingleBlockLookup(DataCharacteristics mcIn, IndexRange ixrange) Indicates if the given index range only covers a single blocks of the inputs matrix.voidThis method should be used to execute the instruction.Methods inherited from class org.apache.sysds.runtime.instructions.spark.IndexingSPInstruction
getColLower, getColUpper, getRowLower, getRowUpper, parseInstructionMethods inherited from class org.apache.sysds.runtime.instructions.spark.ComputationSPInstruction
getOutputVariableNameMethods inherited from class org.apache.sysds.runtime.instructions.spark.SPInstruction
getGraphString, getSPInstructionType, getType, postprocessInstruction, preprocessInstruction, requiresLabelUpdateMethods inherited from class org.apache.sysds.runtime.instructions.Instruction
getBeginColumn, getBeginLine, getEndColumn, getEndLine, getExtendedOpcode, getFilename, getInstID, getInstructionString, getLineNum, getOpcode, getOperator, printMe, setInstID, setLocation, setLocation, setLocation, setLocation, toString, updateInstructionThreadIDMethods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.sysds.runtime.lineage.LineageTraceable
getLineageItems, hasSingleLineage
-
Method Details
-
getLixType
-
processInstruction
Description copied from class:InstructionThis method should be used to execute the instruction.- Specified by:
processInstructionin classSPInstruction- Parameters:
ec- execution context
-
inmemoryIndexing
public static MatrixBlock inmemoryIndexing(org.apache.spark.api.java.JavaPairRDD<MatrixIndexes, MatrixBlock> in1, DataCharacteristics mcIn, DataCharacteristics mcOut, IndexRange ixrange) -
isSingleBlockLookup
Indicates if the given index range only covers a single blocks of the inputs matrix. In this case, we perform a key lookup which is very efficient in case of existing partitioner, especially for out-of-core datasets.- Parameters:
mcIn- matrix characteristicsixrange- index range- Returns:
- true if index range covers a single block of the input matrix
-
isMultiBlockLookup
public static boolean isMultiBlockLookup(org.apache.spark.api.java.JavaPairRDD<?, ?> in, DataCharacteristics mcIn, DataCharacteristics mcOut, IndexRange ixrange) Indicates if the given index range and input matrix exhibit the following properties: (1) existing hash partitioner, (2) out-of-core input matrix (larger than aggregated memory), (3) aligned indexing range (which does not required aggregation), and (4) the output fits twice in memory (in order to collect the result).- Parameters:
in- input matrixmcIn- input matrix characteristicsmcOut- output matrix characteristicsixrange- index range- Returns:
- true if index range requires a multi-block lookup
-
getLineageItem
Description copied from interface:LineageTraceableObtain lineage trace of an instruction with a single output.- Specified by:
getLineageItemin interfaceLineageTraceable- Overrides:
getLineageItemin classComputationSPInstruction- Parameters:
ec- execution context w/ live variables- Returns:
- pair of (output variable name, output lineage item)
-