class_docstr: Profile all candidate kernels and select the best one.
class_docstr_tok: ["Profile","all","candidate","kernels","and","select","the","best","one","."]
docstr: Profile and select the best kernel from candidate kernels.
  If find_first_valid is True, return immediately after the first applicable kernel is found.
  If use_multiprocessing is True, compile all profiler executables in parallel.
docstr_tok: ["Profile","and","select","the","best","kernel","from","candidate","kernels",".","If","find_first_valid","is","True",",","return","immediately","after","the","first","applicable","kernel","is","found",".","If","use_multiprocessing","is","True",",","compile","all","profiler","executables","in","parallel","."]
code: def profile(
      self,
      op_type,
      M,
      N,
      K,
      out_dtype,
      arg0_dtype,
      arg1_dtype,
      use_3xtf32=True,
      profile_all_alignments=False,
      find_first_valid=False,
      use_multiprocessing=False,
      batched=False,
  ):
      """Profile and select the best kernel from candidate kernels.
      If find_first_valid is True, return immediately after the first applicable kernel is found.
      If use_multiprocessing is True, compile all profiler executables in parallel.
      """
      op = self.select_op(
          M,
          N,
          K,
          out_dtype,
          arg0_dtype,
          arg1_dtype,
          use_3xtf32,
          profile_all_alignments=profile_all_alignments,
          find_first_valid=find_first_valid,
          use_multiprocessing=use_multiprocessing,
      )
  
      name, opdef = create_gemm_operator_with_epilogue(
          op_type,
          op["tile_description"],
          op["data_type"],
          op["alignment"],
          op["swizzle_functor"],
          batched=batched,
      )
  
      return name, opdef, op["runtime"]
  
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 4 for calling the CutlassGemmProfiler obj's underlying member method code with example usage: obj.profile(op_type, M, N, K, out_dtype, arg0_dtype, arg1_dtype, use_3xtf32, profile_all_alignments, find_first_valid, use_multiprocessing, batched) and returns: name,  opdef,  op