class_docstr: A class which describes how to realize a Tensor.
  
  The TensorConfig describes both how a Tensor is scheduled (the order in which it's
  produced/consumed) and how its allocated in memory (which region it should reside in
  and whether it should be copied).
  
  Attributes
  ----------
  tensor : Tensor
      The Tensor the config applies to.
  home_region : MemoryRegion
      The region where the tensor is allocated.
  state : TensorConfigState
      The state of the TensorConfig.
  
      The TensorConfigState is only used as part of the Plan generation algorithm. For a Plan
      to be 'closed' (and therefore not subject to any further merging), all the TensorConfigs
      that describe Plan input or output Tensors must be in the 'BOUNDARY' state with the rest
      being 'INTERIOR'. If any of the input or output tensors are described by an 'INTERIOR'
      TensorConfig, then the Plan is 'open' and should be merged with other 'open' Plans until
      the result becomes 'closed'.
  buffer_mode : BufferMode
      The mode in which the buffer should be realized.
  
      There are multiple buffering strategies by which a tensor may be realized (computed).
      These affect the amount of recomputation necessary as well as the size of buffer required
      to store the tensor. See 'BufferMode' for a description of the allowable buffering modes.
  stripe_configs : List[StringConfig]
     The StripeConfigs with which to compute the tensor.
  
     The StripeConfigs determine the order in which the elements of the tensor should be
     computed, including potentially computing them multiple times (recompute). Multiple
     StripeConfigs are used over just a single StripeConfig for the case where the tensor is
     consumed by two different Parts executing themselves with different StripeConfigs. In this
     case, there is a StripeConfig per consumer of the tensor.
  copy_tensor : bool, optional
      Whether to copy the tensor.
  
      While a tensor will originally reside in its home region, the TensorConfig may optionally
      specify that the tensor should be copied (according to the StripeConfigs) into another
      MemoryRegion. As an example for where this may be used, if a weights tensor initially
      resides in slow Flash memory then necessarily the home region will be Flash. However, if
      the weights values are used multiple times by a Part, it may be more performant to choose
      to copy the weights into a faster memory like SRAM.
  copy_region : Union[MemoryRegion, None], optional
      The region to copy the tensor to.
class_docstr_tok: ["A","class","which","describes","how","to","realize","a","Tensor",".","The","TensorConfig","describes","both","how","a","Tensor","is","scheduled","(","the","order","in","which","it's","produced\/consumed",")","and","how","its","allocated","in","memory","(","which","region","it","should","reside","in","and","whether","it","should","be","copied",")",".","Attributes","--","--","--","--","--","tensor",":","Tensor","The","Tensor","the","config","applies","to",".","home_region",":","MemoryRegion","The","region","where","the","tensor","is","allocated",".","state",":","TensorConfigState","The","state","of","the","TensorConfig",".","The","TensorConfigState","is","only","used","as","part","of","the","Plan","generation","algorithm",".","For","a","Plan","to","be","'closed","'","(","and","therefore","not","subject","to","any","further","merging",")",",","all","the","TensorConfigs","that","describe","Plan","input","or","output","Tensors","must","be","in","the","'BOUNDARY","'","state","with","the","rest","being","'INTERIOR","'",".","If","any","of","the","input","or","output","tensors","are","described","by","an","'INTERIOR'","TensorConfig",",","then","the","Plan","is","'open","'","and","should","be","merged","with","other","'open","'","Plans","until","the","result","becomes","'closed","'",".","buffer_mode",":","BufferMode","The","mode","in","which","the","buffer","should","be","realized",".","There","are","multiple","buffering","strategies","by","which","a","tensor","may","be","realized","(","computed",")",".","These","affect","the","amount","of","recomputation","necessary","as","well","as","the","size","of","buffer","required","to","store","the","tensor",".","See","'BufferMode","'","for","a","description","of","the","allowable","buffering","modes",".","stripe_configs",":","List","[","StringConfig","]","The","StripeConfigs","with","which","to","compute","the","tensor",".","The","StripeConfigs","determine","the","order","in","which","the","elements","of","the","tensor","should","be","computed",",","including","potentially","computing","them","multiple","times","(","recompute",")",".","Multiple","StripeConfigs","are","used","over","just","a","single","StripeConfig","for","the","case","where","the","tensor","is","consumed","by","two","different","Parts","executing","themselves","with","different","StripeConfigs",".","In","this","case",",","there","is","a","StripeConfig","per","consumer","of","the","tensor",".","copy_tensor",":","bool",",","optional","Whether","to","copy","the","tensor",".","While","a","tensor","will","originally","reside","in","its","home","region",",","the","TensorConfig","may","optionally","specify","that","the","tensor","should","be","copied","(","according","to","the","StripeConfigs",")","into","another","MemoryRegion",".","As","an","example","for","where","this","may","be","used",",","if","a","weights","tensor","initially","resides","in","slow","Flash","memory","then","necessarily","the","home","region","will","be","Flash",".","However",",","if","the","weights","values","are","used","multiple","times","by","a","Part",",","it","may","be","more","performant","to","choose","to","copy","the","weights","into","a","faster","memory","like","SRAM",".","copy_region",":","Union","[","MemoryRegion",",","None","]",",","optional","The","region","to","copy","the","tensor","to","."]
docstr: The state of the TensorConfig.
docstr_tok: ["The","state","of","the","TensorConfig","."]
code: def state(self):
      """The state of the TensorConfig."""
      return TensorConfigState(self._state)
  
imports: from typing import List, Union
  from enum import IntEnum
  import tvm._ffi
  from tvm.contrib.ethosu.cascader.stripe_config import StripeConfig
  from tvm.runtime import Object
  from .None import _ffi_api
  from .stripe_config import StripeConfig
  from .graph import Tensor, BufferMode
label_desc: Use image node_id 5 for calling the TensorConfig obj's underlying member method code with example usage: obj.state() and returns: TensorConfigState