code: def __call__(self, *tensors: Tensor, **kwargs):
      # Jiterator follow torch.cuda's lazy initialization behavior
      # Defer checking cuda's availability at the function invocation time
      assert (
          self.is_cuda_available
      ), "Jiterator is only supported on CUDA and ROCm GPUs, none are available."
  
      assert (
          len(tensors) <= 8
      ), "jiterator only supports up to 8 tensor inputs."
  
      expanded_kwargs = self.kwargs_dict.copy()
      for key, value in kwargs.items():
          if key in self.kwargs_dict:
              expanded_kwargs[key] = value
          else:
              raise KeyError(
                  f"{key} is not declared in function definition"
              )
  
      return torch._C._cuda_jiterator_compile_and_launch_kernel(
          self.code_string,
          self.kernel_name,
          self.return_by_ref,
          self.num_outputs,
          tensors,
          expanded_kwargs,
      )
  
file_path: pytorch/torch/cuda/jiterator.py
imports: import re
  from typing import Callable, List
  import torch
  from torch import Tensor
label_desc: Use image node_id 2 for calling the _JittedFunction obj's underlying member method code with example usage: obj.__call__() and returns: torch