org.apache.sysds.runtime.instructions.gpu

## Class GPUInstruction

- java.lang.Object
- - org.apache.sysds.runtime.instructions.Instruction
  - - org.apache.sysds.runtime.instructions.gpu.GPUInstruction

All Implemented Interfaces:
  LineageTraceable

Direct Known Subclasses:
  AggregateBinaryGPUInstruction, AggregateUnaryGPUInstruction, ArithmeticBinaryGPUInstruction, BuiltinBinaryGPUInstruction, BuiltinUnaryGPUInstruction, DnnGPUInstruction, MatrixAppendGPUInstruction, MatrixIndexingGPUInstruction, MatrixReshapeGPUInstruction, MMTSJGPUInstruction, RelationalBinaryGPUInstruction, ReorgGPUInstruction, SpoofCUDAInstruction

    public abstract class GPUInstruction
    extends Instruction
    implements LineageTraceable

### Nested Class Summary

Nested Classes
`static class` `GPUInstruction.GPUINSTRUCTION_TYPE`

### Nested classes/interfaces inherited from class org.apache.sysds.runtime.instructions.Instruction

`Instruction.IType`

### Field Summary

Fields
`CPOperand` `_input1`
`CPOperand` `_input2`
`CPOperand` `_output`
`static String` `MISC_TIMER_ABS_KERNEL`
`static String` `MISC_TIMER_ACOS_KERNEL`
`static String` `MISC_TIMER_ACTIVATION_FORWARD_LIB`
`static String` `MISC_TIMER_ALLOCATE`
`static String` `MISC_TIMER_ALLOCATE_DENSE_OUTPUT`
`static String` `MISC_TIMER_ALLOCATE_SPARSE_OUTPUT`
`static String` `MISC_TIMER_ASIN_KERNEL`
`static String` `MISC_TIMER_ATAN_KERNEL`
`static String` `MISC_TIMER_BIAS_ADD_LIB`
`static String` `MISC_TIMER_CBIND_KERNEL`
`static String` `MISC_TIMER_CEIL_KERNEL`
`static String` `MISC_TIMER_COLUMN_TO_ROW_MAJOR`
`static String` `MISC_TIMER_COMPARE_AND_SET_KERNEL`
`static String` `MISC_TIMER_CONVOLUTION_BACKWARD_DATA_LIB`
`static String` `MISC_TIMER_CONVOLUTION_BACKWARD_FILTER_LIB`
`static String` `MISC_TIMER_CONVOLUTION_FORWARD_LIB`
`static String` `MISC_TIMER_COS_KERNEL`
`static String` `MISC_TIMER_COSH_KERNEL`
`static String` `MISC_TIMER_CUDA_FREE`
`static String` `MISC_TIMER_CUDA_SYNC`
`static String` `MISC_TIMER_CUDNN_CLEANUP`
`static String` `MISC_TIMER_CUDNN_INIT`
`static String` `MISC_TIMER_CUMULATIVE_SCAN_KERNEL`
`static String` `MISC_TIMER_CUMULATIVE_SUMPROD_KERNEL`
`static String` `MISC_TIMER_DAXPY_LIB`
`static String` `MISC_TIMER_DAXPY_MV_KERNEL`
`static String` `MISC_TIMER_DENSE_DGEAM_LIB`
`static String` `MISC_TIMER_DENSE_DOT_LIB`
`static String` `MISC_TIMER_DENSE_IM2COL_KERNEL`
`static String` `MISC_TIMER_DENSE_MATRIX_DENSE_MATRIX_LIB`
`static String` `MISC_TIMER_DENSE_MATRIX_DENSE_VECTOR_LIB`
`static String` `MISC_TIMER_DENSE_REORG_KNPQ_KERNEL`
`static String` `MISC_TIMER_DENSE_TO_SPARSE`
`static String` `MISC_TIMER_DENSE_VECTOR_DENSE_MATRIX_LIB`
`static String` `MISC_TIMER_DEVICE_TO_DEVICE`
`static String` `MISC_TIMER_DEVICE_TO_HOST`
`static String` `MISC_TIMER_EVICT`
`static String` `MISC_TIMER_EXP_KERNEL`
`static String` `MISC_TIMER_FILL_KERNEL`
`static String` `MISC_TIMER_FLOOR_KERNEL`
`static String` `MISC_TIMER_HOST_TO_DEVICE`
`static String` `MISC_TIMER_LOG_KERNEL`
`static String` `MISC_TIMER_MATRIX_MATRIX_CELLWISE_OP_KERNEL`
`static String` `MISC_TIMER_MATRIX_SCALAR_OP_KERNEL`
`static String` `MISC_TIMER_MAXPOOLING_BACKWARD_LIB`
`static String` `MISC_TIMER_MAXPOOLING_FORWARD_LIB`
`static String` `MISC_TIMER_OBJECT_CLONE`
`static String` `MISC_TIMER_ORMQR`
`static String` `MISC_TIMER_QR`
`static String` `MISC_TIMER_QR_BUFFER`
`static String` `MISC_TIMER_RBIND_KERNEL`
`static String` `MISC_TIMER_REDUCE_ALL_KERNEL`
`static String` `MISC_TIMER_REDUCE_COL_KERNEL`
`static String` `MISC_TIMER_REDUCE_ROW_KERNEL`
`static String` `MISC_TIMER_RELU_BACKWARD_KERNEL`
`static String` `MISC_TIMER_RELU_KERNEL`
`static String` `MISC_TIMER_REUSE`
`static String` `MISC_TIMER_RIX_DENSE_OP`
`static String` `MISC_TIMER_RIX_SPARSE_DENSE_OP_NNZ`
`static String` `MISC_TIMER_RIX_SPARSE_DENSE_OP_ROWWISE`
`static String` `MISC_TIMER_ROUND_KERNEL`
`static String` `MISC_TIMER_ROW_TO_COLUMN_MAJOR`
`static String` `MISC_TIMER_SET_ZERO`
`static String` `MISC_TIMER_SIGMOID_KERNEL`
`static String` `MISC_TIMER_SIGN_KERNEL`
`static String` `MISC_TIMER_SIN_KERNEL`
`static String` `MISC_TIMER_SINH_KERNEL`
`static String` `MISC_TIMER_SPARSE_ALLOCATE_LIB`
`static String` `MISC_TIMER_SPARSE_DGEAM_LIB`
`static String` `MISC_TIMER_SPARSE_IM2COL_KERNEL`
`static String` `MISC_TIMER_SPARSE_MATRIX_DENSE_MATRIX_LIB`
`static String` `MISC_TIMER_SPARSE_MATRIX_DENSE_VECTOR_LIB`
`static String` `MISC_TIMER_SPARSE_MATRIX_SPARSE_MATRIX_LIB`
`static String` `MISC_TIMER_SPARSE_TO_DENSE`
`static String` `MISC_TIMER_SQRT_KERNEL`
`static String` `MISC_TIMER_SYRK_LIB`
`static String` `MISC_TIMER_TAN_KERNEL`
`static String` `MISC_TIMER_TANH_KERNEL`
`static String` `MISC_TIMER_TRANSPOSE_LIB`
`static String` `MISC_TIMER_TRSM`
`static String` `MISC_TIMER_UPPER_TO_LOWER_TRIANGLE_KERNEL`

### Fields inherited from class org.apache.sysds.runtime.instructions.Instruction

`DATATYPE_PREFIX, FEDERATED_INST_PREFIX, GPU_INST_PREFIX, INSTRUCTION_DELIM, LITERAL_PREFIX, OPERAND_DELIM, SP_INST_PREFIX, VALUETYPE_PREFIX`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`GPUInstruction.GPUINSTRUCTION_TYPE` `getGPUInstructionType()`
`String` `getGraphString()`
`org.apache.commons.lang3.tuple.Pair<String,LineageItem>` `getLineageItem(ExecutionContext ec)` Obtain lineage trace of an instruction with a single output.
`Instruction.IType` `getType()`
`void` `postprocessInstruction(ExecutionContext ec)` This method should be used for any tear down after executing this instruction.
`Instruction` `preprocessInstruction(ExecutionContext ec)` This method should be used for any setup before executing this instruction.
`abstract void` `processInstruction(ExecutionContext ec)` This method should be used to execute the instruction.
`boolean` `requiresLabelUpdate()`

### Methods inherited from class org.apache.sysds.runtime.instructions.Instruction

`getBeginColumn, getBeginLine, getEndColumn, getEndLine, getExtendedOpcode, getFilename, getInstID, getInstructionString, getLineNum, getOpcode, getOperator, getPrivacyConstraint, printMe, setInstID, setLocation, setLocation, setLocation, setLocation, setPrivacyConstraint, setPrivacyConstraint, toString, updateInstructionThreadID`

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

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

### Methods inherited from interface org.apache.sysds.runtime.lineage.LineageTraceable

`getLineageItems, hasSingleLineage`

### Field Detail

#### _output

    public final CPOperand _output

#### _input1

    public final CPOperand _input1

#### _input2

    public final CPOperand _input2

#### MISC_TIMER_HOST_TO_DEVICE

    public static final String MISC_TIMER_HOST_TO_DEVICE

See Also:
  Constant Field Values

#### MISC_TIMER_DEVICE_TO_HOST

    public static final String MISC_TIMER_DEVICE_TO_HOST

See Also:
  Constant Field Values

#### MISC_TIMER_DEVICE_TO_DEVICE

    public static final String MISC_TIMER_DEVICE_TO_DEVICE

See Also:
  Constant Field Values

#### MISC_TIMER_SPARSE_TO_DENSE

    public static final String MISC_TIMER_SPARSE_TO_DENSE

See Also:
  Constant Field Values

#### MISC_TIMER_DENSE_TO_SPARSE

    public static final String MISC_TIMER_DENSE_TO_SPARSE

See Also:
  Constant Field Values

#### MISC_TIMER_ROW_TO_COLUMN_MAJOR

    public static final String MISC_TIMER_ROW_TO_COLUMN_MAJOR

See Also:
  Constant Field Values

#### MISC_TIMER_COLUMN_TO_ROW_MAJOR

    public static final String MISC_TIMER_COLUMN_TO_ROW_MAJOR

See Also:
  Constant Field Values

#### MISC_TIMER_OBJECT_CLONE

    public static final String MISC_TIMER_OBJECT_CLONE

See Also:
  Constant Field Values

#### MISC_TIMER_CUDA_SYNC

    public static final String MISC_TIMER_CUDA_SYNC

See Also:
  Constant Field Values

#### MISC_TIMER_CUDA_FREE

    public static final String MISC_TIMER_CUDA_FREE

See Also:
  Constant Field Values

#### MISC_TIMER_ALLOCATE

    public static final String MISC_TIMER_ALLOCATE

See Also:
  Constant Field Values

#### MISC_TIMER_EVICT

    public static final String MISC_TIMER_EVICT

See Also:
  Constant Field Values

#### MISC_TIMER_ALLOCATE_DENSE_OUTPUT

    public static final String MISC_TIMER_ALLOCATE_DENSE_OUTPUT

See Also:
  Constant Field Values

#### MISC_TIMER_ALLOCATE_SPARSE_OUTPUT

    public static final String MISC_TIMER_ALLOCATE_SPARSE_OUTPUT

See Also:
  Constant Field Values

#### MISC_TIMER_SET_ZERO

    public static final String MISC_TIMER_SET_ZERO

See Also:
  Constant Field Values

#### MISC_TIMER_REUSE

    public static final String MISC_TIMER_REUSE

See Also:
  Constant Field Values

#### MISC_TIMER_SPARSE_ALLOCATE_LIB

    public static final String MISC_TIMER_SPARSE_ALLOCATE_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_DENSE_DOT_LIB

    public static final String MISC_TIMER_DENSE_DOT_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_DENSE_VECTOR_DENSE_MATRIX_LIB

    public static final String MISC_TIMER_DENSE_VECTOR_DENSE_MATRIX_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_DENSE_MATRIX_DENSE_VECTOR_LIB

    public static final String MISC_TIMER_DENSE_MATRIX_DENSE_VECTOR_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_DENSE_MATRIX_DENSE_MATRIX_LIB

    public static final String MISC_TIMER_DENSE_MATRIX_DENSE_MATRIX_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_SPARSE_MATRIX_DENSE_VECTOR_LIB

    public static final String MISC_TIMER_SPARSE_MATRIX_DENSE_VECTOR_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_SPARSE_MATRIX_SPARSE_MATRIX_LIB

    public static final String MISC_TIMER_SPARSE_MATRIX_SPARSE_MATRIX_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_SPARSE_MATRIX_DENSE_MATRIX_LIB

    public static final String MISC_TIMER_SPARSE_MATRIX_DENSE_MATRIX_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_SYRK_LIB

    public static final String MISC_TIMER_SYRK_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_DAXPY_LIB

    public static final String MISC_TIMER_DAXPY_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_QR_BUFFER

    public static final String MISC_TIMER_QR_BUFFER

See Also:
  Constant Field Values

#### MISC_TIMER_QR

    public static final String MISC_TIMER_QR

See Also:
  Constant Field Values

#### MISC_TIMER_ORMQR

    public static final String MISC_TIMER_ORMQR

See Also:
  Constant Field Values

#### MISC_TIMER_TRSM

    public static final String MISC_TIMER_TRSM

See Also:
  Constant Field Values

#### MISC_TIMER_SPARSE_DGEAM_LIB

    public static final String MISC_TIMER_SPARSE_DGEAM_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_DENSE_DGEAM_LIB

    public static final String MISC_TIMER_DENSE_DGEAM_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_TRANSPOSE_LIB

    public static final String MISC_TIMER_TRANSPOSE_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_MATRIX_MATRIX_CELLWISE_OP_KERNEL

    public static final String MISC_TIMER_MATRIX_MATRIX_CELLWISE_OP_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_COMPARE_AND_SET_KERNEL

    public static final String MISC_TIMER_COMPARE_AND_SET_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_EXP_KERNEL

    public static final String MISC_TIMER_EXP_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_SQRT_KERNEL

    public static final String MISC_TIMER_SQRT_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_ROUND_KERNEL

    public static final String MISC_TIMER_ROUND_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_ABS_KERNEL

    public static final String MISC_TIMER_ABS_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_LOG_KERNEL

    public static final String MISC_TIMER_LOG_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_FLOOR_KERNEL

    public static final String MISC_TIMER_FLOOR_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_CEIL_KERNEL

    public static final String MISC_TIMER_CEIL_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_SIN_KERNEL

    public static final String MISC_TIMER_SIN_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_COS_KERNEL

    public static final String MISC_TIMER_COS_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_TAN_KERNEL

    public static final String MISC_TIMER_TAN_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_SINH_KERNEL

    public static final String MISC_TIMER_SINH_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_COSH_KERNEL

    public static final String MISC_TIMER_COSH_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_TANH_KERNEL

    public static final String MISC_TIMER_TANH_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_ASIN_KERNEL

    public static final String MISC_TIMER_ASIN_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_ACOS_KERNEL

    public static final String MISC_TIMER_ACOS_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_ATAN_KERNEL

    public static final String MISC_TIMER_ATAN_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_SIGN_KERNEL

    public static final String MISC_TIMER_SIGN_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_SIGMOID_KERNEL

    public static final String MISC_TIMER_SIGMOID_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_CBIND_KERNEL

    public static final String MISC_TIMER_CBIND_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_RBIND_KERNEL

    public static final String MISC_TIMER_RBIND_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_DAXPY_MV_KERNEL

    public static final String MISC_TIMER_DAXPY_MV_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_UPPER_TO_LOWER_TRIANGLE_KERNEL

    public static final String MISC_TIMER_UPPER_TO_LOWER_TRIANGLE_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_FILL_KERNEL

    public static final String MISC_TIMER_FILL_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_MATRIX_SCALAR_OP_KERNEL

    public static final String MISC_TIMER_MATRIX_SCALAR_OP_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_REDUCE_ALL_KERNEL

    public static final String MISC_TIMER_REDUCE_ALL_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_REDUCE_ROW_KERNEL

    public static final String MISC_TIMER_REDUCE_ROW_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_REDUCE_COL_KERNEL

    public static final String MISC_TIMER_REDUCE_COL_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_RIX_DENSE_OP

    public static final String MISC_TIMER_RIX_DENSE_OP

See Also:
  Constant Field Values

#### MISC_TIMER_RIX_SPARSE_DENSE_OP_ROWWISE

    public static final String MISC_TIMER_RIX_SPARSE_DENSE_OP_ROWWISE

See Also:
  Constant Field Values

#### MISC_TIMER_RIX_SPARSE_DENSE_OP_NNZ

    public static final String MISC_TIMER_RIX_SPARSE_DENSE_OP_NNZ

See Also:
  Constant Field Values

#### MISC_TIMER_ACTIVATION_FORWARD_LIB

    public static final String MISC_TIMER_ACTIVATION_FORWARD_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_CONVOLUTION_FORWARD_LIB

    public static final String MISC_TIMER_CONVOLUTION_FORWARD_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_CONVOLUTION_BACKWARD_FILTER_LIB

    public static final String MISC_TIMER_CONVOLUTION_BACKWARD_FILTER_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_CONVOLUTION_BACKWARD_DATA_LIB

    public static final String MISC_TIMER_CONVOLUTION_BACKWARD_DATA_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_MAXPOOLING_FORWARD_LIB

    public static final String MISC_TIMER_MAXPOOLING_FORWARD_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_MAXPOOLING_BACKWARD_LIB

    public static final String MISC_TIMER_MAXPOOLING_BACKWARD_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_BIAS_ADD_LIB

    public static final String MISC_TIMER_BIAS_ADD_LIB

See Also:
  Constant Field Values

#### MISC_TIMER_RELU_BACKWARD_KERNEL

    public static final String MISC_TIMER_RELU_BACKWARD_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_RELU_KERNEL

    public static final String MISC_TIMER_RELU_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_CUDNN_INIT

    public static final String MISC_TIMER_CUDNN_INIT

See Also:
  Constant Field Values

#### MISC_TIMER_CUDNN_CLEANUP

    public static final String MISC_TIMER_CUDNN_CLEANUP

See Also:
  Constant Field Values

#### MISC_TIMER_DENSE_IM2COL_KERNEL

    public static final String MISC_TIMER_DENSE_IM2COL_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_SPARSE_IM2COL_KERNEL

    public static final String MISC_TIMER_SPARSE_IM2COL_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_DENSE_REORG_KNPQ_KERNEL

    public static final String MISC_TIMER_DENSE_REORG_KNPQ_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_CUMULATIVE_SCAN_KERNEL

    public static final String MISC_TIMER_CUMULATIVE_SCAN_KERNEL

See Also:
  Constant Field Values

#### MISC_TIMER_CUMULATIVE_SUMPROD_KERNEL

    public static final String MISC_TIMER_CUMULATIVE_SUMPROD_KERNEL

See Also:
  Constant Field Values

### Method Detail

#### getType

    public Instruction.IType getType()

Specified by:
  `getType` in class `Instruction`

#### getGPUInstructionType

    public GPUInstruction.GPUINSTRUCTION_TYPE getGPUInstructionType()

#### requiresLabelUpdate

    public boolean requiresLabelUpdate()

Overrides:
  `requiresLabelUpdate` in class `Instruction`

#### getGraphString

    public String getGraphString()

Overrides:
  `getGraphString` in class `Instruction`

#### preprocessInstruction

    public Instruction preprocessInstruction(ExecutionContext ec)

Description copied from class: `Instruction`
This method should be used for any setup before executing this instruction. Overwriting methods should first call the super method and subsequently do their custom setup.

Overrides:
  `preprocessInstruction` in class `Instruction`
Parameters:
  `ec` - execution context
Returns:
  instruction

#### processInstruction

    public abstract void processInstruction(ExecutionContext ec)

Description copied from class: `Instruction`
This method should be used to execute the instruction.

Specified by:
  `processInstruction` in class `Instruction`
Parameters:
  `ec` - execution context

#### postprocessInstruction

    public void postprocessInstruction(ExecutionContext ec)

Description copied from class: `Instruction`
This method should be used for any tear down after executing this instruction. Overwriting methods should first do their custom tear down and subsequently call the super method.

Overrides:
  `postprocessInstruction` in class `Instruction`
Parameters:
  `ec` - execution context

#### getLineageItem

    public org.apache.commons.lang3.tuple.Pair<String,LineageItem> getLineageItem(ExecutionContext ec)

Description copied from interface: `LineageTraceable`
Obtain lineage trace of an instruction with a single output.

Specified by:
  `getLineageItem` in interface `LineageTraceable`
Parameters:
  `ec` - execution context w/ live variables
Returns:
  pair of (output variable name, output lineage item)