class_docstr: This class includes all the information needed to benchmark an operator.
  op_bench: it's a user-defined class (child of TorchBenchmarkBase)
  which includes input and operator, .etc
  test_config: a namedtuple includes test_name, input_shape, tag, run_backward.
  When run_backward is false, the run_forward method will be executed,
  When run_backward is true, run_forward_eager and _output_mean will be
  executed to generate output. Then, run_backward will be executed.
docstr: Run the forward path of an op with eager mode
docstr_tok: ["Run","the","forward","path","of","an","op","with","eager","mode"]
code: def run_forward(self, num_runs, print_per_iter, cuda_sync):
      """Run the forward path of an op with eager mode"""
      if print_per_iter:
          for _ in range(num_runs):
              start_time = time.time()
              self.output = self.op_bench.forward_impl()
              if cuda_sync:
                  torch.cuda.synchronize(torch.cuda.current_device())
              end_time = time.time()
              self.time_series.append((end_time - start_time) * 1e3)
      else:
          for _ in range(num_runs):
              self.output = self.op_bench.forward_impl()
          if cuda_sync:
              torch.cuda.synchronize(torch.cuda.current_device())
  
imports: import json
  import time
  import benchmark_cpp_extension
  import torch
label_desc: Use image node_id 5 for calling the PyTorchOperatorTestCase obj's underlying member method code with example usage: obj.run_forward(num_runs, print_per_iter, cuda_sync) without return types