class_docstr: CUDA implementation of gated activation kernel. This kernel assumes that the input
  tensor has gate and activation values in adjacent channels. The output tensor should
  have half the dimensionality of the input tensor.
docstr: Performs gated activation on the input tensor, writing the result to the output tensor.
  
  Args:
      output (torch.Tensor): Output tensor. Can be of [T, C // 2] or [B, S, C // 2]
      input (torch.Tensor): Input tensor. Can be of [T, C] or [B, S, C]
docstr_tok: ["Performs","gated","activation","on","the","input","tensor",",","writing","the","result","to","the","output","tensor",".","Args",":","output","(","torch.Tensor",")",":","Output","tensor",".","Can","be","of","[","T",",","C","\/\/","2","]","or","[","B",",","S",",","C","\/\/","2","]","input","(","torch.Tensor",")",":","Input","tensor",".","Can","be","of","[","T",",","C","]","or","[","B",",","S",",","C","]"]
code: def __call__(
      self,
      output: torch.Tensor,
      input: torch.Tensor,
      bias: Optional[torch.Tensor] = None,
  ) -> None:
      """
      Performs gated activation on the input tensor, writing the result to the output tensor.
  
      Args:
          output (torch.Tensor): Output tensor. Can be of [T, C // 2] or [B, S, C // 2]
          input (torch.Tensor): Input tensor. Can be of [T, C] or [B, S, C]
      """
      self.kernel(output, input, bias, self.act_fn.value)
  
file_path: deepspeed/deepspeed/inference/v2/kernels/core_ops/gated_activations/gated_activation.py
imports: from typing import Optional
  import torch
  from ...None import DSKernelBase
  from ....inference_utils import ActivationType, elem_size
  from deepspeed.ops.op_builder import InferenceCoreBuilder
label_desc: Use image node_id 2 for calling the CUDAGatedActivation obj's underlying member method code with example usage: obj.__call__(output, input, bias) without return types