docstr: print log report
  args:
      identifier(string): identify log
docstr_tok: ["print","log","report","args",":","identifier","(","string",")",":","identify","log"]
code: def report(self, identifier=None):
      """
      print log report
      args:
          identifier(string): identify log
      """
      if identifier:
          identifier = f"[{identifier}]"
      else:
          identifier = ""
  
      self.logger.info("\n")
      self.logger.info(
          "---------------------- Paddle info ----------------------"
      )
      self.logger.info(
          f"{identifier} paddle_version: {self.paddle_version}"
      )
      self.logger.info(
          f"{identifier} paddle_commit: {self.paddle_commit}"
      )
      self.logger.info(
          f"{identifier} paddle_branch: {self.paddle_branch}"
      )
      self.logger.info(
          f"{identifier} log_api_version: {self.log_version}"
      )
      self.logger.info(
          "----------------------- Conf info -----------------------"
      )
      self.logger.info(
          f"{identifier} runtime_device: {self.config_status['runtime_device']}"
      )
      self.logger.info(
          f"{identifier} ir_optim: {self.config_status['ir_optim']}"
      )
      self.logger.info(f"{identifier} enable_memory_optim: {True}")
      self.logger.info(
          f"{identifier} enable_tensorrt: {self.config_status['enable_tensorrt']}"
      )
      self.logger.info(
          f"{identifier} enable_mkldnn: {self.config_status['enable_mkldnn']}"
      )
      self.logger.info(
          f"{identifier} cpu_math_library_num_threads: {self.config_status['cpu_math_library_num_threads']}"
      )
      self.logger.info(
          "----------------------- Model info ----------------------"
      )
      self.logger.info(f"{identifier} model_name: {self.model_name}")
      self.logger.info(f"{identifier} precision: {self.precision}")
      self.logger.info(
          "----------------------- Data info -----------------------"
      )
      self.logger.info(f"{identifier} batch_size: {self.batch_size}")
      self.logger.info(f"{identifier} input_shape: {self.shape}")
      self.logger.info(f"{identifier} data_num: {self.data_num}")
      self.logger.info(
          "----------------------- Perf info -----------------------"
      )
      self.logger.info(
          f"{identifier} cpu_rss(MB): {self.cpu_rss_mb}, cpu_vms: {self.cpu_vms_mb}, cpu_shared_mb: {self.cpu_shared_mb}, cpu_dirty_mb: {self.cpu_dirty_mb}, cpu_util: {self.cpu_util}%"
      )
      self.logger.info(
          f"{identifier} gpu_rss(MB): {self.gpu_rss_mb}, gpu_util: {self.gpu_util}%, gpu_mem_util: {self.gpu_mem_util}%"
      )
      self.logger.info(
          f"{identifier} total time spent(s): {self.total_time_s}"
      )
  
      if self.with_tracker:
          self.logger.info(
              f"{identifier} preprocess_time(ms): {round(self.preprocess_time_s*1000, 1)}, "
              f"inference_time(ms): {round(self.inference_time_s*1000, 1)}, "
              f"postprocess_time(ms): {round(self.postprocess_time_s*1000, 1)}, "
              f"tracking_time(ms): {round(self.tracking_time_s*1000, 1)}"
          )
      else:
          self.logger.info(
              f"{identifier} preprocess_time(ms): {round(self.preprocess_time_s*1000, 1)}, "
              f"inference_time(ms): {round(self.inference_time_s*1000, 1)}, "
              f"postprocess_time(ms): {round(self.postprocess_time_s*1000, 1)}"
          )
      if self.inference_time_s_90:
          self.looger.info(
              f"{identifier} 90%_cost: {self.inference_time_s_90}, 99%_cost: {self.inference_time_s_99}, succ_rate: {self.succ_rate}"
          )
      if self.qps:
          self.logger.info(f"{identifier} QPS: {self.qps}")
  
file_path: PaddleDetection/deploy/python/benchmark_utils.py
imports: import os
  import logging
  import paddle
  import paddle.inference
  from pathlib import Path
label_desc: Use image node_id 4 for calling the PaddleInferBenchmark obj's underlying member method code with example usage: obj.report(identifier) without return types