class_docstr: Profile all candidate kernels and select the best one.
class_docstr_tok: ["Profile","all","candidate","kernels","and","select","the","best","one","."]
code: def __init__(self, sm, cutlass_path, binary_path):
      assert (
          sm in GENERATOR_FUNC_TABLE and sm in DEFAULT_KERNELS
      ), f"sm{sm} not supported yet."
      self.engine = ProfilerEngine(sm, cutlass_path, binary_path)
      self.sm = sm
      self.cache_path = os.path.join(
          binary_path, "cutlass_gemm_cache.pickle"
      )
      if os.path.exists(self.cache_path):
          self.cache = pickle.load(open(self.cache_path, "rb"))
      else:
          self.cache = {}
  
file_path: tvm/python/tvm/contrib/cutlass/gen_gemm.py
imports: import os
  import pickle
  from .gemm_operation import EmitGemmInstance, GemmOperation
  from .gemm_profiler import GemmProfilerEmitter
  from .gen_tensor_op import EPILOGUE_MAP, GENERATOR_FUNC_TABLE, ProfilerEngine
  from .library import DataType, DataTypeTag, EpilogueFunctor, LayoutType, SwizzlingFunctor, TensorDescription
label_desc: Use image node_id 1 to create a new CutlassGemmProfiler object  with example: obj = CutlassGemmProfiler(sm, cutlass_path, binary_path)