sliceColumnGPU function

GPUTensor<Matrix> sliceColumnGPU(
  1. GPUTensor<Matrix> input,
  2. int startCol,
  3. int endCol,
  4. CommandBuffer tape, {
  5. GPUTensor<Matrix>? outTensor,
})

///////////////////////////////// Tensor Manipulations(700-799) /// ///////////////////////////////// Extracts a continous subset of columns out of a matrix m given by range startCol-endCol. The operation is appended to tape for execution.

Implementation

/// Extracts a continous subset of columns out of a matrix [m] given by range [startCol]-[endCol].
/// The operation is appended to [tape] for execution.
GPUTensor<Matrix> sliceColumnGPU(
    GPUTensor<Matrix> input, int startCol, int endCol, CommandBuffer tape,
    {GPUTensor<Matrix>? outTensor}) {
  int rows = input.shape[0];
  int outCols = endCol - startCol;

  GPUTensor<Matrix> out = outTensor ?? GPUTensor<Matrix>.empty([rows, outCols]);

  tape.putInt(OP_SLICE_COLUMN);
  tape.putString(input.id);
  tape.putString(out.id);
  tape.putInt(startCol);
  tape.putInt(endCol);

  out.creator = GPUNode(
    [input],
    (CommandBuffer bTape) {
      bTape.putInt(OP_SLICE_COLUMN_BACKWARD);
      bTape.putString(out.gradId);
      bTape.putString(input.gradId);
      bTape.putInt(startCol);
      bTape.putInt(endCol);
    },
    opName: 'slice_column',
    cost: rows * outCols,
  );

  return out;
}