docstr: Baseclass for CUDA C++ Templates, derived from KernelTemplate. Not to be instantiated directly.
  
  Args:
      name (str): The name of the CUDATemplate object.
      input_nodes (List[IRNode]): A list of input IRNodes.
      layout (Layout): The layout of the output buffer / tensor.
      input_reorder (Optional[List[int]]): An optional list that specifies the order of the input nodes.
docstr_tok: ["Baseclass","for","CUDA","C++","Templates",",","derived","from","KernelTemplate",".","Not","to","be","instantiated","directly",".","Args",":","name","(","str",")",":","The","name","of","the","CUDATemplate","object",".","input_nodes","(","List","[","IRNode","]",")",":","A","list","of","input","IRNodes",".","layout","(","Layout",")",":","The","layout","of","the","output","buffer","\/","tensor",".","input_reorder","(","Optional","[","List","[","int","]","]",")",":","An","optional","list","that","specifies","the","order","of","the","input","nodes","."]
code: def __init__(
      self,
      name: str,
      input_nodes: List[Buffer],
      layout: Layout,
      input_reorder: Optional[List[int]] = None,
  ):
      """
  
      Baseclass for CUDA C++ Templates, derived from KernelTemplate. Not to be instantiated directly.
  
      Args:
          name (str): The name of the CUDATemplate object.
          input_nodes (List[IRNode]): A list of input IRNodes.
          layout (Layout): The layout of the output buffer / tensor.
          input_reorder (Optional[List[int]]): An optional list that specifies the order of the input nodes.
  
      """
      super().__init__(name)
      self.input_nodes = input_nodes
      self.output_node: Buffer = Buffer("buf_out", layout)
      self.input_reorder = input_reorder
      self.layout = layout
  
imports: import functools
  import itertools
  import logging
  from typing import List, Optional
  from unittest.mock import patch
  import sympy
  import torch
  from ...autotune_process import CUDABenchmarkRequest, TensorMeta
  from ...ir import Buffer, CUDATemplateBuffer, IRNode, Layout
  from ...utils import IndentedBuffer, unique
  from ...virtualized import V
  from ..common import KernelTemplate
  from .cuda_kernel import CUDATemplateCaller, CUDATemplateKernel
label_desc: Use image node_id 1 to create a new CUDATemplate object from inherited base classes: KernelTemplate with example: obj = CUDATemplate(name, input_nodes, layout, input_reorder)