class_docstr: CUTLASS GEMM template, which is used to generate CUTLASS GEMM kernels
  including those which allow flexible fusions with epilogues.
class_docstr_tok: ["CUTLASS","GEMM","template",",","which","is","used","to","generate","CUTLASS","GEMM","kernels","including","those","which","allow","flexible","fusions","with","epilogues","."]
code: def gen_ops(self) -> "List[cutlass_gemm_op.GemmOperation]":  # type: ignore[name-defined]  # noqa: F821
      assert cutlass_utils.try_import_cutlass()
      import cutlass_library.gemm_operation as cutlass_gemm_op
      import cutlass_library.library as cutlass_lib
  
      ops = cutlass_utils.gen_ops()[cutlass_lib.OperationKind.Gemm]
      res: Dict[str, cutlass_gemm_op.GemmOperation] = dict()
      num_3x_ops = 0
      num_2x_ops = 0
      for op_dict in ops.values():
          for op_list in op_dict.values():
              for op in op_list:
                  assert isinstance(op, cutlass_gemm_op.GemmOperation)
                  filter_res = self.filter_op(op)
                  if (
                      filter_res is not None
                      and res.get(filter_res.configuration_name(), None)
                      is None
                  ):
                      res[filter_res.configuration_name()] = filter_res
      for op in res.values():
          if op.gemm_kind == cutlass_lib.GemmKind.Universal3x:
              num_3x_ops += 1
          else:
              num_2x_ops += 1
      log.debug(
          "Got cutlass configs: total number of ops: %d, "
          "total number of 3x ops: %d, total number of 2x ops: %d",
          len(res),
          num_3x_ops,
          num_2x_ops,
      )
      return list(res.values())[
          : inductor_cuda_config.cutlass_max_profiling_configs
      ]
  
imports: import copy
  import logging
  import re
  from typing import cast, Dict, List, Optional, Tuple
  from ...config import cuda
  from ...ir import Buffer, CUDATemplateBuffer, FixedLayout, IRNode, Layout
  from ..common import IndentedBuffer
  from .None import cutlass_utils
  from .cuda_kernel import CUDATemplateKernel
  from .cuda_template import CUTLASSTemplate
  from .cutlass_epilogue_gen import CutlassEVTEpilogueArgumentFormatter, CutlassEVTEpilogueTypeFormatter
label_desc: Use image node_id 15 for calling the CUTLASSGemmTemplate obj's underlying member method code with example usage: obj.gen_ops() and returns: list