class_docstr: Config Details of Evaluator
  
  Parameters
  ----------
  number: int
      The number of times to run this function for taking average.
      We call these runs as one `repeat` of measurement.
  repeat: int
      The number of times to repeat the measurement.
      In total, the function will be invoked (1 + number x repeat) times,
      where the first one is warm up and will be discarded.
      The returned result contains `repeat` costs,
      each of which is an average of `number` costs.
  min_repeat_ms: int
      Minimum repeat time in ms. if the execution latency is too short,
      increase the number of runs to the given time (in ms) to reduce the measurement error.
  enable_cpu_cache_flush: bool
      Whether to flush the cache on CPU.
  
  Note
  ----
  The total number of actual executions is 1+number*repeat because we would warm up 1 time before
  actual run. The number of runs would be increased if run time is below min_repeat_ms.
code: def _normalized(
      config: Optional["EvaluatorConfig"],
  ) -> "EvaluatorConfig":
      if config is None:
          return EvaluatorConfig()
      config = EvaluatorConfig(
          number=config.number,
          repeat=config.repeat,
          min_repeat_ms=config.min_repeat_ms,
          enable_cpu_cache_flush=config.enable_cpu_cache_flush,
      )
      return config
  
file_path: tvm/python/tvm/meta_schedule/runner/config.py
imports: import os
  from threading import Thread
  from typing import NamedTuple, Optional, Union
  from tvm import rpc
label_desc: Use image node_id 1 for calling the EvaluatorConfig obj's underlying member method code with example usage: obj._normalized(config) and returns: config, EvaluatorConfig