class_docstr: The parameters of target hardware used to guide the search policy.
  
  When a parameter isn't provided, it will instead use the
  current machine's default value if target is specified.
  TODO(jcf94): This is considered to be merged with the new Target specification:
  https://discuss.tvm.apache.org/t/rfc-tvm-target-specification/6844
  Parameters
  ----------
  num_cores : int, optional
      The number of device cores.
  vector_unit_bytes : int, optional
      The width of vector units in bytes.
  cache_line_bytes : int, optional
      The size of cache line in bytes.
  max_shared_memory_per_block : int, optional
      The max shared memory per block in bytes.
  max_local_memory_per_block : int, optional
      The max local memory per block in bytes.
  max_threads_per_block : int, optional
      The max number of threads per block.
  max_vthread_extent : int, optional
      The max vthread extent.
  warp_size : int, optional
      The thread numbers of a warp.
  target : str or Target, optional
      The compilation target. Used to determine default values if provided.
  target_host : str or Target, optional
      The compilation target host. Used to determine default values if provided.
docstr: Pretty printing for hardware parameter configuration.
docstr_tok: ["Pretty","printing","for","hardware","parameter","configuration","."]
code: def __str__(self):
      """Pretty printing for hardware parameter configuration."""
      format_str = (
          "HardwareParams:\n"
          f"  num_cores: {self.num_cores}\n"
          f"  vector_unit_bytes: {self.vector_unit_bytes}\n"
          f"  cache_line_bytes: {self.cache_line_bytes}\n"
          f"  max_shared_memory_per_block: {self.max_shared_memory_per_block}\n"
          f"  max_local_memory_per_block: {self.max_local_memory_per_block}\n"
          f"  max_threads_per_block: {self.max_threads_per_block}\n"
          f"  max_vthread_extent: {self.max_vthread_extent}\n"
          f"  warp_size: {self.warp_size}\n"
      )
      return format_str
  
imports: import json
  import os
  import logging
  import numpy
  import tvm._ffi
  from tvm.runtime import Object, ndarray
  from tvm.driver.build_module import build
  from tvm.target import Target
  from .measure import LocalBuilder, LocalRunner
  from .measure_record import load_best_record
  from .workload_registry import make_workload_key
  from .compute_dag import ComputeDAG, LayoutRewriteOption
  from .cost_model import XGBModel
  from .search_policy import SketchPolicy
  from .workload_registry import WORKLOAD_FUNC_REGISTRY, register_workload_tensors
  from .None import _ffi_api
label_desc: Use image node_id 2 for calling the HardwareParams obj's underlying member method code with example usage: obj.__str__() and returns: format_str