class_docstr: The MatMulHandler is a node handler which handles the sharding strategy generation for the matmul operation.
  According to https://pytorch.org/docs/stable/generated/torch.matmul.html, the operations will vary depending on
  the operands.
class_docstr_tok: ["The","MatMulHandler","is","a","node","handler","which","handles","the","sharding","strategy","generation","for","the","matmul","operation",".","According","to","https",":","\/\/pytorch.org\/docs\/stable\/generated\/torch.matmul.html",",","the","operations","will","vary","depending","on","the","operands","."]
code: def _get_op_data_mapping(
      self,
      input_logical_shape,
      other_logical_shape,
      output_logical_shape,
  ):
      # convert list to torch.Size
      if input_logical_shape:
          input_logical_shape = torch.Size(input_logical_shape)
  
      if other_logical_shape:
          other_logical_shape = torch.Size(other_logical_shape)
  
      if output_logical_shape:
          output_logical_shape = torch.Size(output_logical_shape)
  
      # create op data
      input_op_data = OperationData(
          name=str(self.node.args[0]),
          type=OperationDataType.ARG,
          data=self.input_meta_data,
          logical_shape=input_logical_shape,
      )
      other_op_data = OperationData(
          name=str(self.node.args[1]),
          type=OperationDataType.ARG,
          data=self.other_meta_data,
          logical_shape=other_logical_shape,
      )
      output_op_data = OperationData(
          name=str(self.node),
          type=OperationDataType.OUTPUT,
          data=self.output_meta_data,
          logical_shape=output_logical_shape,
      )
  
      mapping = {
          "input": input_op_data,
          "other": other_op_data,
          "output": output_op_data,
      }
      return mapping
  
imports: import operator
  from abc import ABC, abstractmethod
  from copy import deepcopy
  from enum import Enum
  from functools import reduce
  from typing import Dict, List, Union
  import torch
  from colossalai.auto_parallel.tensor_shard.utils.broadcast import BroadcastType, get_broadcast_dim_info, get_broadcast_shape
  from colossalai.tensor.sharding_spec import ShardingSpecException
  from ..sharding_strategy import OperationData, OperationDataType, ShardingStrategy
  from ..utils import recover_sharding_spec_for_broadcast_shape
  from .node_handler import MetaInfoNodeHandler
  from .registry import operator_registry
  from .strategy import BatchedMatMulStrategyGenerator, DotProductStrategyGenerator, LinearProjectionStrategyGenerator, MatVecStrategyGenerator, StrategyGenerator
label_desc: Use image node_id 4 for calling the MatMulHandler obj's underlying member method code with example usage: obj._get_op_data_mapping(input_logical_shape, other_logical_shape, output_logical_shape) and returns: mapping