На компьютере, на котором установлена сессия MATLAB ®, можно создать исходный код глубокого обучения и скомпилировать его для создания библиотеки или исполняемого файла, который работает на целевом аппаратном устройстве ARM ®. Компиляция исходного кода на одной платформе для создания двоичного кода для другой платформы известна как перекрестная компиляция. Этот рабочий процесс поддерживается только для хост-платформы Linux ® и целевых устройств с архитектурой armv7 (32-разрядная) или armv8 (64-разрядная) ARM.
Этот рабочий процесс используется для развертывания кода глубокого обучения на устройствах ARM, не имеющих пакетов аппаратной поддержки.
Примечание
Версия библиотеки вычислений ARM, используемая в примерах в этом разделе справки, может не быть последней версией, поддерживаемой при создании кода. Поддерживаемые версии библиотек и сведения о настройке переменных среды см. в разделе Предварительные условия для глубокого обучения с помощью кодера MATLAB.
Это предпосылки, специфичные для рабочего процесса перекрестной компиляции. Общие предпосылки см. в разделе Предпосылки для глубокого обучения с помощью кодера MATLAB.
Целевое устройство должно иметь архитектуру armv7 (32-разрядная) или armv8 (64-разрядная) ARM. Чтобы проверить архитектуру устройства, выполните следующую команду на терминале устройства:
arch
На хост-компьютере должна быть установлена AArch32 Linaro или AArch64 схема инструментов.
Для цели armv7 установите GNU/GCC g++-arm-linux-gnueabihf на хосте.
Для цели armv8 установите GNU/GCC g++-aarch64-linux-gnu на хосте.
Например, чтобы установить цепочку инструментов Linaro AArch64 на хосте, выполните следующую команду на терминале:
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 на хосте:
Клонируйте репозиторий Git™ для библиотеки ARM Compute и извлеките нужную версию. Например, для получения версии 19.05 выполните следующие команды на главном терминале:
git clone https://github.com/Arm-software/ComputeLibrary.git cd ComputeLibrary git tag -l git checkout v19.05
Установите сконы на хосте. Например, выполните следующие команды на главном терминале:
sudo apt-get install scons
Используйте scons для перекрестной компиляции библиотеки вычислений ARM на хосте. Например, чтобы построить библиотеку для работы на архитектуре 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. Необходимо задать путь один раз для каждого сеанса MATLAB.
Предположим, что в расположении установлена вычислительная библиотека ARM /home/$(USER)/Desktop/ComputeLibrary. Выполните эту команду в командной строке MATLAB:
setenv('ARM_COMPUTELIB','/home/$(USER)/Desktop/ComputeLibrary')
Существует два возможных рабочих процесса для перекрестной компиляции кода глубокого обучения на хост-компьютере и последующего развертывания кода на целевом оборудовании ARM. Ниже приводится краткое описание двух рабочих процессов. Пример, демонстрирующий оба рабочих процесса, см. в разделе Cross Compile Deep Learning Code for ARM Neon Targets.
На главном компьютере создается статическая или динамическая библиотека для кода глубокого обучения. Выполните следующие действия.
На хосте используйте codegen для создания и создания кода глубокого обучения для создания статической или динамической библиотеки.
Скопируйте созданную библиотеку, файлы библиотеки вычислений ARM, make-файл и другие вспомогательные файлы на целевое оборудование.
Скомпилировать скопированный make-файл на целевом объекте для создания исполняемого файла.
Запустите созданный исполняемый файл на целевом оборудовании.
На хост-компьютере создается исполняемый файл для кода глубокого обучения. Выполните следующие действия.
На хосте используйте codegen для создания и создания кода глубокого обучения для создания исполняемого файла.
Скопируйте созданный исполняемый файл, файлы библиотеки вычислений ARM и другие вспомогательные файлы на целевое оборудование.
Запустите исполняемый файл на целевом оборудовании.