From: 박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 Date: Wed, 4 Dec 2019 05:41:09 +0000 (+0900) Subject: Add preset support to create-package (#9366) X-Git-Tag: submit/tizen/20191205.083104~21 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0473791667a6bcd1f3480fea6fcad1a166a5c773;p=platform%2Fcore%2Fml%2Fnnfw.git Add preset support to create-package (#9366) This commit allows users to change the SDK configuration (a.k.a preset) using --preset option. Please note that this does not change the default behavior. Signed-off-by: Jonghyun Park --- diff --git a/infra/packaging/build b/infra/packaging/build index a0c96fe..8769b77 100644 --- a/infra/packaging/build +++ b/infra/packaging/build @@ -7,6 +7,9 @@ if [[ -z "${NNAS_PROJECT_PATH}" ]]; then exit 255 fi +# The default preset +PRESET="20191115" + EXTRA_OPTIONS=() while [ "$#" -ne 0 ]; do CUR="$1" @@ -16,6 +19,10 @@ while [ "$#" -ne 0 ]; do NNAS_INSTALL_PREFIX="$2" shift 2 ;; + '--preset') + PRESET="$2" + shift 2 + ;; '--') shift while [ "$#" -ne 0 ]; do @@ -37,6 +44,18 @@ if [[ -z "${NNAS_INSTALL_PREFIX}" ]]; then exit 255 fi +PRESET_PATH="${SCRIPT_PATH}/preset/${PRESET}" + +if [[ ! -f "${PRESET_PATH}" ]]; then + echo "ERROR: ${PRESET} is unavailable" + # TODO Show available presets + exit 255 +fi + +echo "-- Use '${PRESET}' SDK preset" + +source "${PRESET_PATH}" + # Normalize to absolute path if [[ "${NNAS_INSTALL_PREFIX}" != /* ]]; then NNAS_INSTALL_PREFIX=${PWD}/${NNAS_INSTALL_PREFIX} @@ -63,34 +82,8 @@ function join_by local IFS="$1"; shift; echo "$*" } -REQUIRED_UNITS=() -# Common Libraries -REQUIRED_UNITS+=("angkor" "bino" "cwrap" "fipe" "pepper-str" "pepper-strcast" "pp" "stdex") -REQUIRED_UNITS+=("oops" "pepper-assert") -# Hermes Logging Framework -REQUIRED_UNITS+=("hermes" "hermes-std") -# loco IR and related utilities -REQUIRED_UNITS+=("loco" "locop" "locomotiv" "logo-core" "logo") -# loco IR extension: Custom Op Support -REQUIRED_UNITS+=("locoex-customop") -# TensorFlow Libraries -REQUIRED_UNITS+=("tfinfo" "plier-tf") -# TensorFlow GraphDef I/O -REQUIRED_UNITS+=("mio-tf") -# TensorFlow Frontend (.pb/.pbtxt -> loco.caninical) -REQUIRED_UNITS+=("moco-log" "moco" "moco-tf") -# TensorFlow Lite/Circle Backend (loco.canonical -> .tflite, loco.circle -> .circle) -REQUIRED_UNITS+=("exo") -# Tools -REQUIRED_UNITS+=("tf2tflite" "tf2circle") - -# TODO Use "nncc configure" and "nncc build" -cmake \ - -DCMAKE_INSTALL_PREFIX="${NNCC_INSTALL_PREFIX}" \ - -DCMAKE_BUILD_TYPE=release \ - -DBUILD_WHITELIST=$(join_by ";" "${REQUIRED_UNITS[@]}") \ - ${EXTRA_OPTIONS[@]} \ - "${NNAS_PROJECT_PATH}/infra/nncc" +# Invoke "preset_configure" function that the preset provides +preset_configure NPROC=$(cat /proc/cpuinfo | grep -c processor) cmake --build . -- -j$((NPROC/2)) all @@ -98,15 +91,5 @@ cmake --build . -- install # Install NN Package tools NNPKG_INSTALL_PREFIX="${NNAS_INSTALL_PREFIX}" -install -t "${NNPKG_INSTALL_PREFIX}/bin" -D \ - "${NNAS_PROJECT_PATH}/tools/nnpackage_tool/model2nnpkg/model2nnpkg.sh" \ - "${NNAS_PROJECT_PATH}/tools/nnpackage_tool/tflite2circle/tflite2circle.sh" \ - "${NNAS_PROJECT_PATH}/tools/nnpackage_tool/tflite2circle/tflitejson2circlejson.py" - -install -T -m 644 -D \ - "${SCRIPT_PATH}/res/tflite_schema.fbs" "${NNPKG_INSTALL_PREFIX}/res/tflite_schema.fbs" -install -T -m 644 -D \ - "${NNAS_PROJECT_PATH}/nnpackage/schema/circle_schema.fbs" "${NNPKG_INSTALL_PREFIX}/res/circle_schema.fbs" - -# Install tf2nnpkg -install -T -m 755 -D "${SCRIPT_PATH}/res/tf2nnpkg" "${NNAS_INSTALL_PREFIX}/bin/tf2nnpkg" +# Invoke "preset_install" function that the preset provides +preset_install diff --git a/infra/packaging/preset/20191115 b/infra/packaging/preset/20191115 new file mode 100644 index 0000000..e2f6f8c --- /dev/null +++ b/infra/packaging/preset/20191115 @@ -0,0 +1,49 @@ +#!/bin/bash + +function preset_configure() +{ + REQUIRED_UNITS=() + # Common Libraries + REQUIRED_UNITS+=("angkor" "bino" "cwrap" "fipe" "pepper-str" "pepper-strcast" "pp" "stdex") + REQUIRED_UNITS+=("oops" "pepper-assert") + # Hermes Logging Framework + REQUIRED_UNITS+=("hermes" "hermes-std") + # loco IR and related utilities + REQUIRED_UNITS+=("loco" "locop" "locomotiv" "logo-core" "logo") + # loco IR extension: Custom Op Support + REQUIRED_UNITS+=("locoex-customop") + # TensorFlow Libraries + REQUIRED_UNITS+=("tfinfo" "plier-tf") + # TensorFlow GraphDef I/O + REQUIRED_UNITS+=("mio-tf") + # TensorFlow Frontend (.pb/.pbtxt -> loco.caninical) + REQUIRED_UNITS+=("moco-log" "moco" "moco-tf") + # TensorFlow Lite/Circle Backend (loco.canonical -> .tflite, loco.circle -> .circle) + REQUIRED_UNITS+=("exo") + # Tools + REQUIRED_UNITS+=("tf2tflite" "tf2circle") + + # TODO Use "nncc configure" and "nncc build" + cmake \ + -DCMAKE_INSTALL_PREFIX="${NNCC_INSTALL_PREFIX}" \ + -DCMAKE_BUILD_TYPE=release \ + -DBUILD_WHITELIST=$(join_by ";" "${REQUIRED_UNITS[@]}") \ + ${EXTRA_OPTIONS[@]} \ + "${NNAS_PROJECT_PATH}/infra/nncc" +} + +function preset_install() +{ + install -t "${NNPKG_INSTALL_PREFIX}/bin" -D \ + "${NNAS_PROJECT_PATH}/tools/nnpackage_tool/model2nnpkg/model2nnpkg.sh" \ + "${NNAS_PROJECT_PATH}/tools/nnpackage_tool/tflite2circle/tflite2circle.sh" \ + "${NNAS_PROJECT_PATH}/tools/nnpackage_tool/tflite2circle/tflitejson2circlejson.py" + + install -T -m 644 -D \ + "${SCRIPT_PATH}/res/tflite_schema.fbs" "${NNPKG_INSTALL_PREFIX}/res/tflite_schema.fbs" + install -T -m 644 -D \ + "${NNAS_PROJECT_PATH}/nnpackage/schema/circle_schema.fbs" "${NNPKG_INSTALL_PREFIX}/res/circle_schema.fbs" + + # Install tf2nnpkg + install -T -m 755 -D "${SCRIPT_PATH}/res/tf2nnpkg" "${NNAS_INSTALL_PREFIX}/bin/tf2nnpkg" +}