exponenta event banner

Cross-Compile Deep Learning Code, использующий вычислительную библиотеку ARM

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

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

См. также

Связанные темы