summaryrefslogtreecommitdiff
path: root/build_default.py
diff options
context:
space:
mode:
authorKshitij Sisodia <kshitij.sisodia@arm.com>2021-10-29 12:29:06 +0100
committerKshitij Sisodia <kshitij.sisodia@arm.com>2021-10-29 17:56:00 +0100
commit3be2623cb0ccf4a86bbf06be09d438767a960ca5 (patch)
tree31fed74e309152f3298f98940ac02b8d41b6e228 /build_default.py
parent79d4154ee071d0e7ef2d1eecdde149d488bb9d8b (diff)
downloadml-embedded-evaluation-kit-3be2623cb0ccf4a86bbf06be09d438767a960ca5.tar.gz
MLECO-2512: Minor improvement for helper scripts.
Python scripts 'build_default.py' and 'set_up_default_resources.py' now allow building for non-default Ethos-U configurations: H32, H64, H256 and Y512. Change-Id: Iefdbf135410396c4dc0be73462644725d4b47910
Diffstat (limited to 'build_default.py')
-rwxr-xr-xbuild_default.py46
1 files changed, 34 insertions, 12 deletions
diff --git a/build_default.py b/build_default.py
index b863c51..b642b80 100755
--- a/build_default.py
+++ b/build_default.py
@@ -23,10 +23,16 @@ import logging
import sys
from argparse import ArgumentParser
-from set_up_default_resources import set_up_resources
+from set_up_default_resources import set_up_resources, \
+ get_default_npu_config_from_name, \
+ valid_npu_config_names, \
+ default_npu_config_names
-def run(toolchain: str, download_resources: bool, run_vela_on_models: bool):
+def run(toolchain: str,
+ download_resources: bool,
+ run_vela_on_models: bool,
+ npu_config_name: str):
"""
Run the helpers scripts.
@@ -35,13 +41,15 @@ def run(toolchain: str, download_resources: bool, run_vela_on_models: bool):
toolchain (str) : Specifies if 'gnu' or 'arm' toolchain needs to be used.
download_resources (bool): Specifies if 'Download resources' step is performed.
run_vela_on_models (bool): Only if `download_resources` is True, specifies if run vela on downloaded models.
+ npu_config_name(str) : Ethos-U NPU configuration name. See "valid_npu_config_names"
"""
current_file_dir = os.path.dirname(os.path.abspath(__file__))
# 1. Make sure the toolchain is supported, and set the right one here
supported_toolchain_ids = ["gnu", "arm"]
- assert toolchain in supported_toolchain_ids, f"Toolchain must be from {supported_toolchain_ids}"
+ assert (toolchain in supported_toolchain_ids,
+ f"Toolchain must be from {supported_toolchain_ids}")
if toolchain == "arm":
toolchain_file_name = "bare-metal-armclang.cmake"
elif toolchain == "gnu":
@@ -50,14 +58,16 @@ def run(toolchain: str, download_resources: bool, run_vela_on_models: bool):
# 2. Download models if specified
if download_resources is True:
logging.info("Downloading resources.")
- set_up_resources(run_vela_on_models)
+ set_up_resources(run_vela_on_models=run_vela_on_models,
+ additional_npu_config_names=[npu_config_name])
# 3. Build default configuration
logging.info("Building default configuration.")
target_platform = "mps3"
target_subsystem = "sse-300"
+ ethos_u_cfg = get_default_npu_config_from_name(npu_config_name)
build_dir = os.path.join(current_file_dir,
- f"cmake-build-{target_platform}-{target_subsystem}-{toolchain}-release")
+ f"cmake-build-{target_platform}-{target_subsystem}-{npu_config_name}-{toolchain}")
try:
os.mkdir(build_dir)
except FileExistsError:
@@ -75,17 +85,21 @@ def run(toolchain: str, download_resources: bool, run_vela_on_models: bool):
os.chdir(build_dir)
cmake_toolchain_file = os.path.join(current_file_dir, "scripts", "cmake",
"toolchains", toolchain_file_name)
- cmake_command = (f"cmake .. -DTARGET_PLATFORM={target_platform} " +
- f"-DTARGET_SUBSYSTEM={target_subsystem} " +
- f" -DCMAKE_TOOLCHAIN_FILE={cmake_toolchain_file}")
+ cmake_command = (f"cmake .. -DTARGET_PLATFORM={target_platform}" +
+ f" -DTARGET_SUBSYSTEM={target_subsystem}" +
+ f" -DCMAKE_TOOLCHAIN_FILE={cmake_toolchain_file}" +
+ f" -DETHOS_U_NPU_ID={ethos_u_cfg.ethos_u_npu_id}" +
+ f" -DETHOS_U_NPU_CONFIG_ID={ethos_u_cfg.ethos_u_config_id}")
logging.info(cmake_command)
- state = subprocess.run(cmake_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ state = subprocess.run(cmake_command, shell=True, stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT)
logging.info(state.stdout.decode('utf-8'))
make_command = f"make -j{multiprocessing.cpu_count()}"
logging.info(make_command)
- state = subprocess.run(make_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ state = subprocess.run(make_command, shell=True, stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT)
logging.info(state.stdout.decode('utf-8'))
@@ -102,9 +116,17 @@ if __name__ == '__main__':
parser.add_argument("--skip-vela",
help="Do not run Vela optimizer on downloaded models.",
action="store_true")
+ parser.add_argument("--npu-config-name",
+ help=f"""Arm Ethos-U configuration to build for. Choose from:
+ {valid_npu_config_names}""",
+ default=default_npu_config_names[0])
args = parser.parse_args()
- logging.basicConfig(filename='log_build_default.log', level=logging.DEBUG, filemode='w')
+ logging.basicConfig(filename='log_build_default.log', level=logging.DEBUG,
+ filemode='w')
logging.getLogger().addHandler(logging.StreamHandler(sys.stdout))
- run(args.toolchain.lower(), not args.skip_download, not args.skip_vela)
+ run(args.toolchain.lower(),
+ not args.skip_download,
+ not args.skip_vela,
+ args.npu_config_name)