class_docstr: Trace all indice information for every node.
  
  Indice is a logical concept. Equal dims can been treated as one indice.
  eg. dim(x1) = [a, b, c]
      dim(x2) = [d, e, f]
      and we have x3 = x1 * x2.
      then a=d, b=e, c=f, due to the broadcast property,
      dim(x1)=dim(x2)=dim(x3)=[a, b, c]
  This class will record every node's dims' indice, compute and source.
  
  Attributes:
      node_list (List)
      indice_trace_list (List): [{"indice": [...], "compute": [...], "source": [...]}, {...}]
      indice_view_list (Dict): not used for now
      indice_count (int): record indice number
  
  Args:
      node_list (List)
class_docstr_tok: ["Trace","all","indice","information","for","every","node",".","Indice","is","a","logical","concept",".","Equal","dims","can","been","treated","as","one","indice",".","eg",".","dim","(","x1",")","=","[","a",",","b",",","c","]","dim","(","x2",")","=","[","d",",","e",",","f","]","and","we","have","x3","=","x1","*","x2",".","then","a=d",",","b=e",",","c=f",",","due","to","the","broadcast","property",",","dim","(","x1",")","=dim","(","x2",")","=dim","(","x3",")","=","[","a",",","b",",","c","]","This","class","will","record","every","node","'s","dims","'","indice",",","compute","and","source",".","Attributes",":","node_list","(","List",")","indice_trace_list","(","List",")",":","[","{","``","indice","''",":","[","...","]",",","``","compute","''",":","[","...","]",",","``","source","''",":","[","...","]","}",",","{","...","}","]","indice_view_list","(","Dict",")",":","not","used","for","now","indice_count","(","int",")",":","record","indice","number","Args",":","node_list","(","List",")"]
docstr: Assign indice for softmax op.
  1. assign indice as input node
  2. inherit computation and mark softmax dim as computed.
  
  Args:
      node (node)
      node_idx (int)
docstr_tok: ["Assign","indice","for","softmax","op",".","1.","assign","indice","as","input","node","2.","inherit","computation","and","mark","softmax","dim","as","computed",".","Args",":","node","(","node",")","node_idx","(","int",")"]
code: def _assign_softmax_indice(self, node, idx):
      """
      Assign indice for softmax op.
      1. assign indice as input node
      2. inherit computation and mark softmax dim as computed.
  
      Args:
          node (node)
          node_idx (int)
      """
      self._assign_indice_as_input(node, idx)
      self._mark_computation(node, idx, [node.kwargs["dim"]])
  
imports: import copy
  from typing import Dict, List
  from torch.fx.node import Node
  from .utils import NodeMgr, find_first_tensor_arg, flat_list, get_module_node_name, get_node_name, get_node_shape
label_desc: Use image node_id 32 for calling the TraceIndice obj's underlying member method code with example usage: obj._assign_softmax_indice(node, idx) without return types