Перекрестная компиляция кода глубокого обучения, который использует ARM Compute Library

На компьютере, на котором размещен 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 и другие вспомогательные файлы на целевой компьютер.

    • Запустите исполняемый файл на целевом компьютере.

См. также

Похожие темы