高通智能多媒体 SDK (QIM SDK) 快速入门指南(2)
4 构建 QIM SDK – 开发人员工作流程
QIM SDK 工作流程要求开发人员向配置文件提供有效的输入条目。sdk-tools 项目中的辅助 shell 脚本(存在于 QIM SDK 源代码树中)提供辅助实用函数来设置 shell 环境,开发人员可以将其用于 QIM SDK 工作流程。
开发人员在容器内构建 QIM SDK 项目,并使用 sdk-tools 提供的实用程序生成工件。
构建 QIM SDK 容器后,开发人员可以附加到容器并使用容器 shell 环境中的帮助程序实用程序进行持续开发。
- 可以将 QIM SDK 工件安装到通过 USB/adb 连接到 Linux 主机的 Qualcomm 设备。
- 还可以将 QIM SDK 工件从容器复制到连接 Qualcomm 设备的不同主机。
下图列出了使用用于构建 QIM SDK 的帮助程序脚本设置容器环境后可用的实用程序集。
下图显示了实用程序的执行顺序:
4.1 与容器同步并构建 QIM SDK
QIM SDK 在创建 docker 镜像时编译。
要同步和构建 QIM SDK,请执行以下操作:
-
在主机文件系统上创建一个目录以同步 QIM SDK 工作区。例如:
$mkdir <qim-sdk-workspace> $cd <qim-sdk-workspace>
-
从 CodeLinaro 获取 QIM SDK 源代码:
$ repo init -u https://git.codelinaro.org/clo/le/sdkqim/qim/manifest.git --repo-branch=qc/stable --repo-url=git://git.quicinc.com/tools/repo.git -m QIM.SDK.1.0.0.r1-01100-QIM.0.xml -b release && repo sync -qc --no-tags -j8
-
在主机文件系统上创建一个可以挂载到docker上的目录。
例如:mkdir -p /<host_dir>
该目录可以在 Linux 主机上的任何位置创建,并且不依赖于 QIM SDK 项目的同步位置。
在容器内完成工作流程后,可以在此步骤中创建的目录中找到 QIM SDK 工件。
-
/sdk-tools/targets/LE.PRODUCT.2.1 编辑包含以下条目的JSON 配置文件 :
{ "Image_OS": "ubuntu18", "Additional_tag": "sdk-18", "eSDK_shell_file": "Absolute path to Platform extensible SDK file on Linux Workstation", "Base_Dir_Location": "path-to-the-directory-where-the-project-is-initialized-applies-only-for-Linux-Workstation(host)-build-variant", "Tflite_prebuilt_file": "absolute path to tf-lite-prebuilt-dev-tar-file generated from TfLite SDK", "Acceleration_engines": [ { "Acceleration_engine":"name of acceleration engine 1", "Acceleration_engine_path":"absolute path to Acceleration Engine SDK 1" }, { "Acceleration_engine":"-", "Acceleration_engine_path":"-" } ], "Host_dir_mounted_in_container": "<Directory on Host that will be mapped into QIMSDK container to get artifacts to host (not applicable to Linux Workstation workflow)>", "Deploy_URL": "/home/<container username>/work/sync_rel", "Deploy_dev_URL": "/home/<container username>/work/sync_dev", "Deploy_QIMSDK_Artifacts_URL":"Directory on Host where all QIMSDK artifacts archive will be made available", "Gst_plugins_qti_oss_dependencies":["cairo", "ffmpeg", "gdk-pixbuf", "liba52", "libgudev", "lame", "librsvg", "libtheora", "libusb1", "libwebp", "mpg123", "orc", "sbc", "speex", "taglib", "vulkan-loader"] }
有关 JSON 配置文件中提到的条目的更多信息,请参阅Docker.md中的自述文件/sdk-tools/。
启用AI推理插件:
高通神经处理 SDK
QIM SDK 工作流程可以为 Qualcomm 神经处理 SDK(以前称为 SNPE)生成 QIM SDK 插件。
要构建 SNPE QIM SDK 插件,需要下载 SNPE SDK,并需要在配置 JSON 文件中提供 Linux 工作站上 SNPE sdk 的路径。
-
要下载适用于 Ubuntu 的 Qualcomm Package Manager 3,请单击https://qpm.qualcomm.com/,然后单击工具。
-
在左窗格的“搜索工具”字段中,输入QPM。从系统操作系统列表中,选择Linux。
搜索结果显示 Qualcomm 包管理器列表。 -
选择 Qualcomm Package Manager 3 并下载 Linux debian 软件包。
-
要安装适用于 Linux 的 Qualcomm Package Manager 3,请使用以下命令:
$ dpkg -i --force-overwrite /path/to/QualcommPackageManager3.3.0.83.1.Linux-x86.deb
-
要下载 Qualcomm Snapdragon 神经处理引擎 SDK,请单击 https://qpm.qualcomm.com/,然后单击工具。
-
在左窗格的“搜索工具”字段中,输入ai stack。从系统操作系统列表中,选择Linux。
搜索结果显示 Qualcomm 包管理器列表。 -
单击 Qualcomm® Neural Processing SDK,然后下载 Linux 版本 2.13.0 的 .qik 包。
-
要在 Ubuntu 工作站上安装 Qualcomm® 神经处理 SDK,请运行以下命令:
$ qpm-cli --login <username> $ qpm-cli --license-activate qualcomm_neural_processing_sdk $ qpm-cli --extract <full path to downloaded .qik file>
提取成功后,显示以下消息。 “/opt/qcom/aistack/snpe/2.13.4.230831”
-
将条目添加到LE.PRODUCT.2.1.json文件中。例如:
"Acceleration_engines": [ {"Acceleration_engine":"snpe", "Acceleration_engine_path":”/opt/qcom/aistack/snpe/2.13.4.230831" }, ]
-
从 Ubuntu 工作站将库推送到设备。运行以下命令将相关库和二进制文件侧面加载到设备上:
$ cd /opt/qcom/aistack/snpe/2.13.4.230831 on Ubuntu Workstation $ adb push ./lib/aarch64-oe-linux-gcc11.2/libcalculator_htp.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libcalculator.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libhta_hexagon_runtime_snpe.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libPlatformValidatorShared.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSnpeDspV65Stub.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSnpeDspV66Stub.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSnpeHta.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSnpeHtpV68Stub.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSnpeHtpV73Stub.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSNPE.so /usr/lib $ adb push ./lib/hexagon-v65/unsigned/libSnpeDspV65Skel.so /usr/lib/rfsa/adsp $ adb push ./lib/hexagon-v65/unsigned/libCalculator_skel.so /usr/lib/rfsa/adsp $ adb push ./lib/hexagon-v66/unsigned/libSnpeDspV66Skel.so /usr/lib/rfsa/adsp $ adb push ./lib/hexagon-v68/unsigned/libSnpeDspV68Skel.so /usr/lib/rfsa/adsp $ adb push ./lib/hexagon-v69/unsigned/libSnpeDspV69Skel.so /usr/lib/rfsa/adsp $ adb push ./lib/hexagon-v73/unsigned/libSnpeDspV73Skel.so /usr/lib/rfsa/adsp $ adb push ./bin/aarch64-oe-linux-gcc11.2/snpe-net-run /usr/bin $ adb push ./bin/aarch64-oe-linux-gcc11.2/snpe-parallel-run /usr/bin $ adb push ./bin/aarch64-oe-linux-gcc11.2/snpe-platform-validator /usr/bin $ adb push ./bin/aarch64-oe-linux-gcc11.2/snpe-throughput-net-run /usr/bin
请参阅Qualcomm TensorFlow Lite 软件开发套件 (TFLITE SDK) 工具快速入门指南(80-50450-52) 执行以下操作:
- 启用 TFLite GStreamer 插件
- Tflite_prebuilt_file获取 TFLite 工件并更新上述 JSON 文件中的相关字段 ( )
-
获取脚本以设置环境:
$ cd <qim-sdk-workspace>/sdk-tools $ source ./scripts/host/docker_env_setup.sh
-
构建 QIM SDK docker 镜像:
$ qimsdk-docker-build-image ./targets/LE.PRODUCT.2.1.json
如果构建设置失败,请参阅排除 docker 设置故障。
成功完成后,将显示以下消息:
“状态:构建镜像成功完成!!!”运行此步骤也会构建 QIM SDK。
-
运行 QIM SDK docker 容器。这将使用 JSON 配置文件中提供的标签启动容器。
$qimsdk-docker-run-container ./targets/LE.PRODUCT.2.1.json
将显示以下消息:
“状态:Docker qimsdk-ubuntu18-sdk-18 运行成功!!!” -
将 docker 连接到容器:
$ docker attach qimsdk-ubuntu18-sdk-18
将显示 docker shell,并且 bash 环境中可以使用以下帮助程序实用程序:
QIM SDK 已编译,并且工件已准备好部署。