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 has_tma_epilogue(op) -> bool:
      assert cutlass_utils.try_import_cutlass()
      import cutlass_library.library as cutlass_lib
  
      result = False
      if op.gemm_kind == cutlass_lib.GemmKind.Universal3x:
          epilogue_schedule_str = str(op.epilogue_schedule).split(".")[
              -1
          ]
          result = epilogue_schedule_str.lower().startswith("tma")
      return result
  
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 8 for calling the CUTLASSGemmTemplate obj's underlying member method code with example usage: obj.has_tma_epilogue(op) and returns: result