class_docstr: An object that represents a possible kernel configuration for the auto-tuner to try.
  
  :ivar meta: a dictionary of meta-parameters to pass to the kernel as keyword arguments.
  :type meta: dict[Str, Any]
  :ivar num_warps: the number of warps to use for the kernel when compiled for GPUs. For example, if
                    `num_warps=8`, then each kernel instance will be automatically parallelized to
                    cooperatively execute using `8 * 32 = 256` threads.
  :type num_warps: int
  :ivar num_stages: the number of stages that the compiler should use when software-pipelining loops.
                     Mostly useful for matrix multiplication workloads on SM80+ GPUs.
  :type num_ctas: int
  :ivar num_ctas: number of blocks in a block cluster. SM90+ only.
  :type enable_warp_specialization: bool
  :ivar enable_warp_specialization: enable specialization (spatial partitioning) or not. See https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#spatial-partitioning-also-known-as-warp-specialization
  :ivar pre_hook: a function that will be called before the kernel is called. Parameters of this
                  function are args.
class_docstr_tok: ["An","object","that","represents","a","possible","kernel","configuration","for","the","auto-tuner","to","try",".",":","ivar","meta",":","a","dictionary","of","meta-parameters","to","pass","to","the","kernel","as","keyword","arguments",".",":","type","meta",":","dict","[","Str",",","Any","]",":","ivar","num_warps",":","the","number","of","warps","to","use","for","the","kernel","when","compiled","for","GPUs",".","For","example",",","if","`","num_warps=8","`",",","then","each","kernel","instance","will","be","automatically","parallelized","to","cooperatively","execute","using","`","8","*","32","=","256","`","threads",".",":","type","num_warps",":","int",":","ivar","num_stages",":","the","number","of","stages","that","the","compiler","should","use","when","software-pipelining","loops",".","Mostly","useful","for","matrix","multiplication","workloads","on","SM80+","GPUs",".",":","type","num_ctas",":","int",":","ivar","num_ctas",":","number","of","blocks","in","a","block","cluster",".","SM90+","only",".",":","type","enable_warp_specialization",":","bool",":","ivar","enable_warp_specialization",":","enable","specialization","(","spatial","partitioning",")","or","not",".","See","https",":","\/\/docs.nvidia.com\/cuda\/cuda-c-programming-guide\/index.html","#","spatial-partitioning-also-known-as-warp-specialization",":","ivar","pre_hook",":","a","function","that","will","be","called","before","the","kernel","is","called",".","Parameters","of","this","function","are","args","."]
code: def __str__(self):
      res = []
      for k, v in self.kwargs.items():
          res.append(f"{k}: {v}")
      res.append(f"num_warps: {self.num_warps}")
      res.append(f"num_ctas: {self.num_ctas}")
      res.append(f"num_stages: {self.num_stages}")
      res.append(
          f"enable_warp_specialization: {self.enable_warp_specialization}"
      )
      res.append(f"enable_persistent: {self.enable_persistent}")
      return ", ".join(res)
  
imports: from __future__ import annotations
  import builtins
  import time
  from typing import Dict
  from ..testing import do_bench
  from .jit import KernelInterface
label_desc: Use image node_id 2 for calling the Config obj's underlying member method code with example usage: obj.__str__() and returns: str