На компьютере, на котором размещен MATLAB® можно сгенерировать исходный код глубокого обучения и скомпилировать его, чтобы создать библиотеку или исполняемый файл, который запускается на целевой ARM® аппаратное устройство. Компиляция исходного кода на одной платформе для создания двоичного кода для другой платформы известна как cross-compilation. Этот рабочий процесс поддерживается только для Linux® хост-платформа и целевые устройства с архитектурой armv7 (32-разрядная) или armv8 (64-разрядная) ARM.
Используйте этот рабочий процесс для развертывания кода глубокого обучения на устройствах ARM, которые не имеют пакетов аппаратной поддержки.
Примечание
Версия библиотеки ARM Compute, которую используют примеры в этой теме справки, возможно, не является последней версией, которая поддержки генерацию кода. Для поддерживаемых версий библиотек и для получения информации о настройке переменных окружения, смотрите Необходимые условия для глубокого обучения с MATLAB Coder.
Это необходимые условия, характерные для рабочего процесса перекрестной компиляции. Для получения общих необходимых условий смотрите Необходимые условия для Глубокого Обучения с MATLAB Coder.
Целевое устройство должно иметь armv7 (32-разрядную) или armv8 (64-разрядную) архитектуру ARM. Чтобы проверить архитектуру вашего устройства, выполните эту команду в терминале устройства:
arch
На AArch32 должен быть установлен набор AArch64 Linaro или хост-компьютер.
Для цели armv7 установите g++-arm-linux-gnueabihf
GNU/GCC набор инструментов на хосте.
Для цели armv8 установите g++-aarch64-linux-gnu
GNU/GCC набор инструментов на хосте.
Например, чтобы установить набор AArch64 Linaro на хост, запустите эту команду в терминале:
sudo apt-get install g++-aarch64-linux-gnu
В командной строке MATLAB установите переменную окружения LINARO_TOOLCHAIN_AARCH32
или LINARO_TOOLCHAIN_AARCH64
для пути к двоичным элементам набора инструментальных средств. Необходимо задать путь один раз на сеанс работы с MATLAB.
Предположим, что набор инструментальных средств установлен в местоположении /usr/bin
в хосте.
Для цели armv7 выполните эту команду:
setenv('LINARO_TOOLCHAIN_AARCH32', '/usr/bin')
Для цели armv8 выполните эту команду:
setenv('LINARO_TOOLCHAIN_AARCH64', '/usr/bin')
Перекрестная компиляция библиотеки ARM Compute на хосте:
Клонируйте репозиторий Git™ для библиотеки ARM Compute и проверьте необходимую версию. Для примера, чтобы извлечь v19.05, запустите следующие команды в терминале хоста:
git clone https://github.com/Arm-software/ComputeLibrary.git cd ComputeLibrary git tag -l git checkout v19.05
Установите сканы на хост. Для примера запуска следующие команды в терминале хоста:
sudo apt-get install scons
Используйте сканы для перекрестной компиляции библиотеки ARM Compute на хосте. Например, чтобы создать библиотеку для запуска на архитектуре armv8, запустите эту команду в терминале хоста:
scons Werror=0 -j8 debug=0 neon=1 opencl=0 os=linux arch=arm64-v8a openmp=1 cppthreads=1 examples=0 asserts=0 build=cross_compile
В командной строке MATLAB установите переменную окружения ARM_COMPUTELIB
для пути к библиотеке ARM Compute. Необходимо задать путь один раз на сеанс работы с MATLAB.
Предположим, что библиотека ARM Compute установлена в расположении /home/$(USER)/Desktop/ComputeLibrary
. Выполните эту команду в командной строке MATLAB:
setenv('ARM_COMPUTELIB','/home/$(USER)/Desktop/ComputeLibrary')
Существуют два возможных рабочих процессов для перекрестной компиляции кода глубокого обучения на вашем хосте-компьютере и последующего развертывания кода на целевом оборудовании ARM. Вот сводные данные по двум рабочим процессам. Для примера, который демонстрирует оба рабочих процессов, смотрите Cross Compile Deep Learning Code для ARM Neon Targets.
На хост-компьютер вы генерируете статическую или динамическую библиотеку для кода глубокого обучения. Выполните следующие действия:
На хосте используйте codegen
команда для генерации и создания кода глубокого обучения для создания статической или динамической библиотеки.
Скопируйте сгенерированную библиотеку, файлы библиотеки ARM Compute, файл make-файла и другие вспомогательные файлы на целевой компьютер.
Скомпилируйте скопированный make-файл в целевом файле, чтобы создать исполняемый файл.
Запустите сгенерированный исполняемый файл на целевом компьютере.
На хост-компьютер вы генерируете исполняемый файл для кода глубокого обучения. Выполните следующие действия:
На хосте используйте codegen
команда для генерации и создания кода глубокого обучения для создания исполняемого файла.
Скопируйте сгенерированный исполняемый файл, файлы библиотеки ARM Compute и другие вспомогательные файлы на целевой компьютер.
Запустите исполняемый файл на целевом компьютере.