Package 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
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `GPUInstruction.GPUINSTRUCTION_TYPE` |

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

      `Instruction.IType`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `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
    Modifier and Type | Method | Description
    --- | --- | ---
    `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)