class_docstr: UnaryElementwiseGenerator which deals with the sharding strategies of UnaryElementwiseOp.
code: def collate_strategies(self) -> List[ShardingStrategy]:
      strategy_list = []
      # For element-wise function, we keep the sharding spec of output node same as
      # the input. Therefore, the different strategies of input node with same
      # output sharding spec will generate same strategy for element-wise function.
      for index, strategy in enumerate(
          self.predecessor_node.strategies_vector
      ):
          dim_partition_dict_mapping = {}
          communication_action_mapping = {}
          input_sharding_spec = strategy.output_sharding_specs[
              self.op_data["input"]
          ]
          dim_partition_dict_for_input = (
              input_sharding_spec.dim_partition_dict
          )
          dim_partition_dict_for_output = copy.deepcopy(
              dim_partition_dict_for_input
          )
          dim_partition_dict_mapping = {
              "input": dim_partition_dict_for_input,
              "output": dim_partition_dict_for_output,
          }
          sharding_spec_mapping = self.to_sharding_spec_mapping(
              dim_partition_dict_mapping
          )
          # add index into name to pass the duplicated check
          # we keep same strategies with different name for node merging, and it will not increase the searching space,
          # because in solver, this node will be merged into other nodes, and solver will not create a new variable for this node.
          name = f'{sharding_spec_mapping["input"].sharding_sequence} -> {sharding_spec_mapping["output"].sharding_sequence}_{index}'
          strategy = self.get_sharding_strategy(
              name=name,
              sharding_spec_mapping=sharding_spec_mapping,
              communication_action_mapping=communication_action_mapping,
          )
          strategy_list.append(strategy)
  
      return strategy_list
  
file_path: colossalai/colossalai/auto_parallel/tensor_shard/node_handler/strategy/unary_elementwise_generator.py
imports: import copy
  from typing import List
  from colossalai.auto_parallel.tensor_shard.sharding_strategy import MemoryCost, ShardingStrategy, TrainCycleItem
  from .strategy_generator import FollowingStrategyGenerator
label_desc: Use image node_id 4 for calling the UnaryElementwiseGenerator obj's underlying member method code with example usage: obj.collate_strategies() and returns: strategy_list