class_docstr: Scheduler for CUDA Kernels, which delegates calls as appropriate
  to the CUDA-C++ and Triton Schedulers, which both work for CUDA devices
  and use a unified-wrapper for codegen.
  
  If Scheduling code needs to be specialized for the case of mixed Triton / CUDA C++ code,
  this would also be the place to do it.
class_docstr_tok: ["Scheduler","for","CUDA","Kernels",",","which","delegates","calls","as","appropriate","to","the","CUDA-C++","and","Triton","Schedulers",",","which","both","work","for","CUDA","devices","and","use","a","unified-wrapper","for","codegen",".","If","Scheduling","code","needs","to","be","specialized","for","the","case","of","mixed","Triton","\/","CUDA","C++","code",",","this","would","also","be","the","place","to","do","it","."]
code: def can_fuse_horizontal(
      self, node1: BaseSchedulerNode, node2: BaseSchedulerNode
  ):
      for node in (node1, node2):
          if self._cuda_cpp_scheduling.is_cuda_cpp_template(
              node
          ) or self._cuda_cpp_scheduling.is_cuda_cpp_fused_template(
              node
          ):
              return self._cuda_cpp_scheduling.can_fuse_horizontal(
                  node1, node2
              )  # always False at the moment
      return self._triton_scheduling.can_fuse_horizontal(node1, node2)
  
file_path: pytorch/torch/_inductor/codegen/cuda_combined_scheduling.py
imports: from typing import List
  from ..scheduler import BaseSchedulerNode, BaseScheduling, Scheduler, SchedulerNode
  from .cuda.cuda_cpp_scheduling import CUDACPPScheduling
  from .triton import TritonScheduling
label_desc: Use image node_id 4 for calling the CUDACombinedScheduling obj's underlying member method code with example usage: obj.can_fuse_horizontal(node1, node2) and returns: self, self