class_docstr: A SplitHandler which deals with the sharding strategies for torch.permute or torch.split.
code: def get_operation_data_mapping(self) -> Dict[str, OperationData]:
      # check if the input operand is a parameter
      if isinstance(
          self.node.args[0]._meta_data, torch.nn.parameter.Parameter
      ):
          data_type = OperationDataType.PARAM
      else:
          data_type = OperationDataType.ARG
  
      input_data = self.node.args[0]._meta_data
      physical_input_operand = OperationData(
          name=str(self.node.args[0]), type=data_type, data=input_data
      )
      split_size = self.node.args[1]
      if len(self.node.args) == 3:
          # (input, split_size, split_dim)
          split_dim = self.node.args[2]
      else:
          if self.node.kwargs:
              split_dim = self.node.kwargs["dim"]
          else:
              split_dim = 0
  
      num_dims = self.node.args[0]._meta_data.dim()
      # recover negative value to positive
      if split_dim < 0:
          split_dim += num_dims
  
      split_info = (split_size, split_dim)
      physical_shape_operand = OperationData(
          name="split_info", type=OperationDataType.ARG, data=split_info
      )
  
      output_data = self.node._meta_data
      physical_output_operand = OperationData(
          name=str(self.node),
          type=OperationDataType.OUTPUT,
          data=output_data,
      )
  
      mapping = {
          "input": physical_input_operand,
          "split_info": physical_shape_operand,
          "output": physical_output_operand,
      }
  
      return mapping
  
file_path: ColossalAI/colossalai/auto_parallel/tensor_shard/node_handler/split_handler.py
imports: from typing import Dict, List
  import torch
  from ..sharding_strategy import OperationData, OperationDataType
  from .node_handler import NodeHandler
  from .registry import operator_registry
  from .strategy import SplitGenerator, StrategyGenerator
label_desc: Use image node_id 2 for calling the SplitHandler obj's underlying member method code with example usage: obj.get_operation_data_mapping() and returns: mapping