Fix python benchmark_app hanging on faster rcnn (#6003)

This commit is contained in:
Nadezhda Ageeva 2021-06-02 22:01:20 +03:00 committed by GitHub
parent e7e8c4b85e
commit ac1803c3ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 7 deletions

View File

@ -93,7 +93,7 @@ class Benchmark:
infer_request.infer() infer_request.infer()
else: else:
infer_request.async_infer() infer_request.async_infer()
status = exe_network.wait() status = infer_request.wait()
if status != StatusCode.OK: if status != StatusCode.OK:
raise Exception(f"Wait for all requests is failed with status code {status}!") raise Exception(f"Wait for all requests is failed with status code {status}!")
return infer_request.latency return infer_request.latency

View File

@ -95,7 +95,7 @@ def parse_args():
help='Optional. Enable threads->cores (\'YES\' which is OpenVINO runtime\'s default for conventional CPUs), ' help='Optional. Enable threads->cores (\'YES\' which is OpenVINO runtime\'s default for conventional CPUs), '
'threads->(NUMA)nodes (\'NUMA\'), ' 'threads->(NUMA)nodes (\'NUMA\'), '
'threads->appropriate core types (\'HYBRID_AWARE\', which is OpenVINO runtime\'s default for Hybrid CPUs)' 'threads->appropriate core types (\'HYBRID_AWARE\', which is OpenVINO runtime\'s default for Hybrid CPUs)'
'or completely disable (\'NO\')' 'or completely disable (\'NO\')'
'CPU threads pinning for CPU-involved inference.') 'CPU threads pinning for CPU-involved inference.')
args.add_argument('-exec_graph_path', '--exec_graph_path', type=str, required=False, args.add_argument('-exec_graph_path', '--exec_graph_path', type=str, required=False,
help='Optional. Path to a file where to store executable graph information serialized.') help='Optional. Path to a file where to store executable graph information serialized.')
@ -118,9 +118,9 @@ def parse_args():
" Please note, command line parameters have higher priority then parameters from configuration file.") " Please note, command line parameters have higher priority then parameters from configuration file.")
args.add_argument('-qb', '--quantization_bits', type=int, required=False, default=None, choices=[8, 16], args.add_argument('-qb', '--quantization_bits', type=int, required=False, default=None, choices=[8, 16],
help="Optional. Weight bits for quantization: 8 (I8) or 16 (I16) ") help="Optional. Weight bits for quantization: 8 (I8) or 16 (I16) ")
args.add_argument('-ip', '--input_precision', type=str, required=False, default='U8', choices=['U8', 'FP16', 'FP32'], args.add_argument('-ip', '--input_precision', type=str, required=False, choices=['U8', 'FP16', 'FP32'],
help='Optional. Specifies precision for all input layers of the network.') help='Optional. Specifies precision for all input layers of the network.')
args.add_argument('-op', '--output_precision', type=str, required=False, default='FP32', choices=['U8', 'FP16', 'FP32'], args.add_argument('-op', '--output_precision', type=str, required=False, choices=['U8', 'FP16', 'FP32'],
help='Optional. Specifies precision for all output layers of the network.') help='Optional. Specifies precision for all output layers of the network.')
args.add_argument('-iop', '--input_output_precision', type=str, required=False, args.add_argument('-iop', '--input_output_precision', type=str, required=False,
help='Optional. Specifies precision for input and output layers by name. Example: -iop "input:FP16, output:FP16". Notice that quotes are required. Overwrites precision from ip and op options for specified layers.') help='Optional. Specifies precision for input and output layers by name. Example: -iop "input:FP16, output:FP16". Notice that quotes are required. Overwrites precision from ip and op options for specified layers.')

View File

@ -48,10 +48,21 @@ def next_step(additional_info='', step_id=0):
print(step_info_template) print(step_info_template)
def process_precision(ie_network: IENetwork, app_inputs_info, input_precision: str, output_precision: str, input_output_precision: str): def process_precision(ie_network: IENetwork, app_inputs_info, input_precision: str, output_precision: str, input_output_precision: str):
_configure_network_inputs(ie_network, app_inputs_info, input_precision) if input_precision:
_configure_network_outputs(ie_network, output_precision) _configure_network_inputs(ie_network, app_inputs_info, input_precision)
if output_precision:
_configure_network_outputs(ie_network, output_precision)
if input_output_precision: if input_output_precision:
_configure_network_inputs_and_outputs(ie_network, input_output_precision) _configure_network_inputs_and_outputs(ie_network, input_output_precision)
input_info = ie_network.input_info
for key in app_inputs_info.keys():
## if precision for input set by user, then set it to app_inputs
## if it an image, set U8
if input_precision or (input_output_precision and key in input_output_precision.keys()):
app_inputs_info[key].precision = input_info[key].precision
elif app_inputs_info[key].is_image:
app_inputs_info[key].precision = 'U8'
input_info[key].precision = 'U8'
def _configure_network_inputs(ie_network: IENetwork, app_inputs_info, input_precision: str): def _configure_network_inputs(ie_network: IENetwork, app_inputs_info, input_precision: str):
input_info = ie_network.input_info input_info = ie_network.input_info
@ -74,7 +85,7 @@ def _configure_network_inputs_and_outputs(ie_network: IENetwork, input_output_pr
input_info = ie_network.input_info input_info = ie_network.input_info
output_info = ie_network.outputs output_info = ie_network.outputs
for key, value in user_precision_map.items(): for key, value in user_precision_map.items():
if key in input_info: if key in input_info:
input_info[key].precision = value input_info[key].precision = value