[CONFORMANCE] Add check devices in parallelization over devices (#16964)
* [CONFORMANCE] Add check devices in parallelization over devices * Remove extra
This commit is contained in:
parent
231569db16
commit
ae34720818
@ -62,13 +62,14 @@ def parse_arguments():
|
|||||||
parser.add_argument("-c", "--ov_config_path", help=ov_config_path_helper, type=str, required=False, default="")
|
parser.add_argument("-c", "--ov_config_path", help=ov_config_path_helper, type=str, required=False, default="")
|
||||||
parser.add_argument("-s", "--dump_conformance", help=dump_conformance_help, type=int, required=False, default=0)
|
parser.add_argument("-s", "--dump_conformance", help=dump_conformance_help, type=int, required=False, default=0)
|
||||||
parser.add_argument("-sm", "--shape_mode", help=shape_mode_help, type=str, required=False, default="")
|
parser.add_argument("-sm", "--shape_mode", help=shape_mode_help, type=str, required=False, default="")
|
||||||
parser.add_argument("-p", "--parallel_devices", help=parallel_help, type=int, required=False, default=0)
|
parser.add_argument("-p", "--parallel_devices", help=parallel_help, type=bool, required=False, default=False)
|
||||||
|
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
class Conformance:
|
class Conformance:
|
||||||
def __init__(self, device:str, model_path:os.path, ov_path:os.path, type:str, workers:int,
|
def __init__(self, device:str, model_path:os.path, ov_path:os.path, type:str, workers:int,
|
||||||
gtest_filter:str, working_dir:os.path, ov_config_path:os.path, shape_mode:str):
|
gtest_filter:str, working_dir:os.path, ov_config_path:os.path, shape_mode:str,
|
||||||
|
parallel_devices:bool):
|
||||||
self._device = device
|
self._device = device
|
||||||
self._model_path = model_path
|
self._model_path = model_path
|
||||||
self._ov_path = ov_path
|
self._ov_path = ov_path
|
||||||
@ -93,6 +94,7 @@ class Conformance:
|
|||||||
else:
|
else:
|
||||||
logger.error(f'Incorrect value to set shape mode: {shape_mode}. Please check to get possible values')
|
logger.error(f'Incorrect value to set shape mode: {shape_mode}. Please check to get possible values')
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
self._is_parallel_over_devices = parallel_devices
|
||||||
|
|
||||||
def __download_models(self, url_to_download, path_to_save):
|
def __download_models(self, url_to_download, path_to_save):
|
||||||
_, file_name = os.path.split(urlparse(url_to_download).path)
|
_, file_name = os.path.split(urlparse(url_to_download).path)
|
||||||
@ -170,7 +172,7 @@ class Conformance:
|
|||||||
f"--report_unique_name", f'--output_folder="{parallel_report_dir}"',
|
f"--report_unique_name", f'--output_folder="{parallel_report_dir}"',
|
||||||
f'--gtest_filter={self._gtest_filter}', f'--config_path="{self._ov_config_path}"',
|
f'--gtest_filter={self._gtest_filter}', f'--config_path="{self._ov_config_path}"',
|
||||||
f'--shape_mode={self._shape_mode}']
|
f'--shape_mode={self._shape_mode}']
|
||||||
conformance = TestParallelRunner(f"{conformance_path}", command_line_args, self._workers, logs_dir, "", True)
|
conformance = TestParallelRunner(f"{conformance_path}", command_line_args, self._workers, logs_dir, "", self._is_parallel_over_devices)
|
||||||
conformance.run()
|
conformance.run()
|
||||||
conformance.postprocess_logs()
|
conformance.postprocess_logs()
|
||||||
|
|
||||||
@ -240,5 +242,5 @@ if __name__ == "__main__":
|
|||||||
args.ov_path, args.type,
|
args.ov_path, args.type,
|
||||||
args.workers, args.gtest_filter,
|
args.workers, args.gtest_filter,
|
||||||
args.working_dir, args.ov_config_path,
|
args.working_dir, args.ov_config_path,
|
||||||
args.shape_mode)
|
args.shape_mode, args.parallel_devices)
|
||||||
conformance.run(args.dump_conformance)
|
conformance.run(args.dump_conformance)
|
||||||
|
@ -202,7 +202,7 @@ class TaskManager:
|
|||||||
return self._idx
|
return self._idx
|
||||||
|
|
||||||
class TestParallelRunner:
|
class TestParallelRunner:
|
||||||
def __init__(self, exec_file_path: os.path, test_command_line: list, worker_num: int, working_dir: os.path, cache_path: os.path, is_parallel_devices: False):
|
def __init__(self, exec_file_path: os.path, test_command_line: list, worker_num: int, working_dir: os.path, cache_path: os.path, is_parallel_devices=False):
|
||||||
self._exec_file_path = exec_file_path
|
self._exec_file_path = exec_file_path
|
||||||
self._working_dir = working_dir
|
self._working_dir = working_dir
|
||||||
self._command = self.__init_basic_command_line_for_exec_file(test_command_line)
|
self._command = self.__init_basic_command_line_for_exec_file(test_command_line)
|
||||||
|
@ -33,5 +33,10 @@ RELEASE_DIR = "Release"
|
|||||||
OP_CONFORMANCE = "OP"
|
OP_CONFORMANCE = "OP"
|
||||||
API_CONFORMANCE = "API"
|
API_CONFORMANCE = "API"
|
||||||
|
|
||||||
REL_WEIGHTS_FILENAME = "rel_weights_REPLACE.lst"
|
DEVICE_ARCHITECTURE_PROPERTY = "DEVICE_ARCHITECTURE"
|
||||||
|
FULL_DEVICE_PROPERTY = "FULL_DEVICE_NAME"
|
||||||
|
SUPPORTED_PROPERTIES = "SUPPORTED_PROPERTIES"
|
||||||
|
|
||||||
|
|
||||||
REL_WEIGHTS_REPLACE_STR = "REPLACE"
|
REL_WEIGHTS_REPLACE_STR = "REPLACE"
|
||||||
|
REL_WEIGHTS_FILENAME = f"rel_weights_{REL_WEIGHTS_REPLACE_STR}.lst"
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
# Copyright (C) 2018-2023 Intel Corporation
|
# Copyright (C) 2018-2023 Intel Corporation
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
from utils.conformance_utils import get_logger
|
||||||
|
from utils.constants import FULL_DEVICE_PROPERTY, SUPPORTED_PROPERTIES, DEVICE_ARCHITECTURE_PROPERTY
|
||||||
|
|
||||||
|
logger = get_logger("get_available_device")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from openvino.runtime import Core
|
from openvino.runtime import Core
|
||||||
@ -9,9 +12,7 @@ except:
|
|||||||
from utils.file_utils import get_ov_path, find_latest_dir
|
from utils.file_utils import get_ov_path, find_latest_dir
|
||||||
import os
|
import os
|
||||||
from utils.constants import PY_OPENVINO, LD_LIB_PATH_NAME
|
from utils.constants import PY_OPENVINO, LD_LIB_PATH_NAME
|
||||||
from utils.conformance_utils import get_logger, set_env_variable
|
from utils.conformance_utils import set_env_variable
|
||||||
|
|
||||||
logger = get_logger("get_available_device")
|
|
||||||
|
|
||||||
script_dir, _ = os.path.split(os.path.abspath(__file__))
|
script_dir, _ = os.path.split(os.path.abspath(__file__))
|
||||||
ov_bin_path = get_ov_path(script_dir, None, True)
|
ov_bin_path = get_ov_path(script_dir, None, True)
|
||||||
@ -39,5 +40,15 @@ def get_available_devices(target_device = None, exclude_device = None):
|
|||||||
if target_device is None or target_device in device:
|
if target_device is None or target_device in device:
|
||||||
if exclude_device in device:
|
if exclude_device in device:
|
||||||
continue
|
continue
|
||||||
|
supported_metrics = core.get_property(target_device, SUPPORTED_PROPERTIES)
|
||||||
|
if FULL_DEVICE_PROPERTY in supported_metrics:
|
||||||
|
if core.get_property(target_device, FULL_DEVICE_PROPERTY) != core.get_property(device, FULL_DEVICE_PROPERTY):
|
||||||
|
logger.warning(f'Device {device} is different {FULL_DEVICE_PROPERTY} with {target_device} ( : {core.get_property(device, FULL_DEVICE_PROPERTY)} : {core.get_property(target_device, FULL_DEVICE_PROPERTY)} )')
|
||||||
|
continue
|
||||||
|
if DEVICE_ARCHITECTURE_PROPERTY in supported_metrics:
|
||||||
|
if not core.get_property(target_device, DEVICE_ARCHITECTURE_PROPERTY) != core.get_property(device, DEVICE_ARCHITECTURE_PROPERTY):
|
||||||
|
logger.warning(f'Device {device} is different {DEVICE_ARCHITECTURE_PROPERTY} with {target_device} ( : {core.get_property(device, DEVICE_ARCHITECTURE_PROPERTY)} : {core.get_property(target_device, DEVICE_ARCHITECTURE_PROPERTY)} )')
|
||||||
|
continue
|
||||||
|
logger.info(f"{device} is added to device pool")
|
||||||
result.append(device)
|
result.append(device)
|
||||||
return result
|
return result
|
||||||
|
Loading…
Reference in New Issue
Block a user