class_docstr: CUDA implementation of MoE scatter
code: def __init__(self, dtype: DtypeEnum, channels: int) -> None:
      if not isinstance(dtype, DtypeEnum):
          dtype = DtypeEnum(dtype)
  
      if dtype not in MoEScatter.supported_dtypes:
          raise RuntimeError(f"Unsupported dtype {dtype}")
  
      if channels % 8 != 0:
          raise RuntimeError(
              f"Channels {channels} must be divisible by 8"
          )
  
      inf_module = RaggedOpsBuilder().load()
      self.kernel = inf_module.moe_scatter
  
file_path: DeepSpeed/deepspeed/inference/v2/kernels/ragged_ops/moe_scatter/moe_scatter.py
imports: import torch
  from typing import Tuple
  from ...None import DSKernelBase
  from ....inference_utils import DtypeEnum
  from deepspeed.ops.op_builder import RaggedOpsBuilder
label_desc: Use image node_id 1 to create a new MoEScatter object from inherited base classes: DSKernelBase with example: obj = MoEScatter(dtype, channels)