diff --git a/tools/benchmark_tool/README.md b/tools/benchmark_tool/README.md index c08515e355a..acb5e0bb631 100644 --- a/tools/benchmark_tool/README.md +++ b/tools/benchmark_tool/README.md @@ -102,13 +102,13 @@ Running the application with the `-h` or `--help` option yields the following us ``` benchmark_app -h [Step 1/11] Parsing and validating input arguments -usage: benchmark_app [-h [HELP]] [-i PATHS_TO_INPUT [PATHS_TO_INPUT ...]] -m PATH_TO_MODEL [-d TARGET_DEVICE] [-l PATH_TO_EXTENSION] [-c PATH_TO_CLDNN_CONFIG] [-hint {throughput,latency,none}] +usage: benchmark_app [-h [HELP]] [-i PATHS_TO_INPUT [PATHS_TO_INPUT ...]] -m PATH_TO_MODEL [-d TARGET_DEVICE] [-extensions PATH_TO_EXTENSIONS] [-c PATH_TO_CLDNN_CONFIG] [-hint {throughput,latency,none}] [-api {sync,async}] [-niter NUMBER_ITERATIONS] [-nireq NUMBER_INFER_REQUESTS] [-b BATCH_SIZE] [-stream_output [STREAM_OUTPUT]] [-t TIME] [-progress [PROGRESS]] [-shape SHAPE] [-data_shape DATA_SHAPE] [-layout LAYOUT] [-nstreams NUMBER_STREAMS] [--latency_percentile {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100}] - [-enforcebf16 [{True,False}]] [-nthreads NUMBER_THREADS] [-pin {YES,NO,NUMA,HYBRID_AWARE}] [-exec_graph_path EXEC_GRAPH_PATH] [-pc [PERF_COUNTS]] [-pcseq [PCSEQ]] + [-nthreads NUMBER_THREADS] [-pin {YES,NO,NUMA,HYBRID_AWARE}] [-exec_graph_path EXEC_GRAPH_PATH] [-pc [PERF_COUNTS]] [-pcseq [PCSEQ]] [-inference_only [INFERENCE_ONLY]] [-report_type {no_counters,average_counters,detailed_counters}] [-report_folder REPORT_FOLDER] [-dump_config DUMP_CONFIG] - [-load_config LOAD_CONFIG] [-qb {8,16}] [-ip {u8,U8,f16,FP16,f32,FP32}] [-op {u8,U8,f16,FP16,f32,FP32}] [-iop INPUT_OUTPUT_PRECISION] [-cdir CACHE_DIR] [-lfile [LOAD_FROM_FILE]] + [-load_config LOAD_CONFIG] [-infer_precision INFER_PRECISION] [-ip {u8,U8,f16,FP16,f32,FP32}] [-op {u8,U8,f16,FP16,f32,FP32}] [-iop INPUT_OUTPUT_PRECISION] [-cdir CACHE_DIR] [-lfile [LOAD_FROM_FILE]] [-iscale INPUT_SCALE] [-imean INPUT_MEAN] Options: @@ -122,8 +122,8 @@ Options: -d TARGET_DEVICE, --target_device TARGET_DEVICE Optional. Specify a target device to infer on (the list of available devices is shown below). Default value is CPU. Use '-d HETERO:' format to specify HETERO plugin. Use '-d MULTI:' format to specify MULTI plugin. The application looks for a suitable plugin for the specified device. - -l PATH_TO_EXTENSION, --path_to_extension PATH_TO_EXTENSION - Optional. Required for CPU custom layers. Absolute path to a shared library with the kernels implementations. + -extensions PATH_TO_EXTENSIONS, --extensions PATH_TO_EXTENSIONS + Optional. Path or a comma-separated list of paths to libraries (.so or .dll) with extensions. -c PATH_TO_CLDNN_CONFIG, --path_to_cldnn_config PATH_TO_CLDNN_CONFIG Optional. Required for GPU custom kernels. Absolute path to an .xml file with the kernels description. -hint {throughput,latency,none}, --perf_hint {throughput,latency,none} @@ -155,9 +155,6 @@ Options: number of streams should be set to 1. See samples README for more details. --latency_percentile {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100} Optional. Defines the percentile to be reported in latency metric. The valid range is [1, 100]. The default value is 50 (median). - -enforcebf16 [{True,False}], --enforce_bfloat16 [{True,False}] - Optional. By default floating point operations execution in bfloat16 precision are enforced if supported by platform. 'True' - enable bfloat16 regardless of platform support. - 'False' - disable bfloat16 regardless of platform support. -nthreads NUMBER_THREADS, --number_threads NUMBER_THREADS Number of threads to use for inference on the CPU, GNA (including HETERO and MULTI cases). -pin {YES,NO,NUMA,HYBRID_AWARE}, --infer_threads_pinning {YES,NO,NUMA,HYBRID_AWARE} @@ -181,8 +178,8 @@ Options: Optional. Path to JSON file to dump OpenVINO parameters, which were set by application. -load_config LOAD_CONFIG Optional. Path to JSON file to load custom OpenVINO parameters. Please note, command line parameters have higher priority then parameters from configuration file. - -qb {8,16}, --quantization_bits {8,16} - Optional. Weight bits for quantization: 8 (I8) or 16 (I16) + -infer_precision INFER_PRECISION + Optional. Hint to specifies inference precision. Example: -infer_precision CPU:bf16,GPU:f32'. -ip {u8,U8,f16,FP16,f32,FP32}, --input_precision {u8,U8,f16,FP16,f32,FP32} Optional. Specifies precision for all input layers of the network. -op {u8,U8,f16,FP16,f32,FP32}, --output_precision {u8,U8,f16,FP16,f32,FP32} diff --git a/tools/benchmark_tool/openvino/tools/benchmark/benchmark.py b/tools/benchmark_tool/openvino/tools/benchmark/benchmark.py index 26829bf920e..00015557a89 100644 --- a/tools/benchmark_tool/openvino/tools/benchmark/benchmark.py +++ b/tools/benchmark_tool/openvino/tools/benchmark/benchmark.py @@ -30,14 +30,15 @@ class Benchmark: def __del__(self): del self.core - def add_extension(self, path_to_extension: str=None, path_to_cldnn_config: str=None): + def add_extension(self, path_to_extensions: str=None, path_to_cldnn_config: str=None): if path_to_cldnn_config: self.core.set_property(GPU_DEVICE_NAME, {'CONFIG_FILE': path_to_cldnn_config}) logger.info(f'GPU extensions is loaded {path_to_cldnn_config}') - if path_to_extension: - self.core.add_extension(extension_path=path_to_extension) - logger.info(f'CPU extensions is loaded {path_to_extension}') + if path_to_extensions: + for extension in path_to_extensions.split(","): + logger.info(f"Loading extension {extension}") + self.core.add_extension(extension) def get_version_info(self) -> str: logger.info(f"OpenVINO:\n{'': <9}{'API version':.<24} {get_version()}") diff --git a/tools/benchmark_tool/openvino/tools/benchmark/main.py b/tools/benchmark_tool/openvino/tools/benchmark/main.py index 529f84e8329..797630d1f6c 100644 --- a/tools/benchmark_tool/openvino/tools/benchmark/main.py +++ b/tools/benchmark_tool/openvino/tools/benchmark/main.py @@ -91,9 +91,8 @@ def main(): benchmark = Benchmark(args.target_device, args.number_infer_requests, args.number_iterations, args.time, args.api_type, args.inference_only) - ## CPU (OneDNN) extensions - if CPU_DEVICE_NAME in device_name and args.path_to_extension: - benchmark.add_extension(path_to_extension=args.path_to_extension) + if args.extensions: + benchmark.add_extension(path_to_extensions=args.extensions) ## GPU (clDNN) Extensions if GPU_DEVICE_NAME in device_name and args.path_to_cldnn_config: diff --git a/tools/benchmark_tool/openvino/tools/benchmark/parameters.py b/tools/benchmark_tool/openvino/tools/benchmark/parameters.py index 4516e258c6d..9463cebe633 100644 --- a/tools/benchmark_tool/openvino/tools/benchmark/parameters.py +++ b/tools/benchmark_tool/openvino/tools/benchmark/parameters.py @@ -44,9 +44,8 @@ def parse_args(): 'Default value is CPU. Use \'-d HETERO:\' format to specify HETERO plugin. ' 'Use \'-d MULTI:\' format to specify MULTI plugin. ' 'The application looks for a suitable plugin for the specified device.') - args.add_argument('-l', '--path_to_extension', type=str, required=False, default=None, - help='Optional. Required for CPU custom layers. ' - 'Absolute path to a shared library with the kernels implementations.') + args.add_argument('-extensions', '--extensions', type=str, required=False, default=None, + help='Optional. Path or a comma-separated list of paths to libraries (.so or .dll) with extensions.') args.add_argument('-c', '--path_to_cldnn_config', type=str, required=False, help='Optional. Required for GPU custom kernels. Absolute path to an .xml file with the ' 'kernels description.')