Skip to content

RC-MODULE/nmpp

Repository files navigation

Документация:

HTML: http://rc-module.github.io/nmpp/modules.html
CHM(ZIP): http://rc-module.github.io/nmpp/nmpp.zip
CHM: http://rc-module.github.io/nmpp/nmpp.chm (При открытии необходимо снять галочку "Всегда спрашивать при открытии этого файла")
PDF: http://rc-module.github.io/nmpp/nmpp.pdf

Описание функций сопровождается таблицами производительности при разных параметрах

Назначение

NMPP (Neuro Matrix Performance Primitives) - C/C++ библиотека примитивов для архитектуры NeuroMatrix. Содержит оптимизированные функции для работы со скалярами, векторами, матрицами, сигналами и изображениями. Поддерживает как целочисленную арифметику с 1,2,4,8,16,32,64-разрядными данными процессоров семейства NMC3, так и арифметику с плавающей точкой одинарной и двойной точности для процессора NMC4.

Компоненты библиотеки

NMPP библиотека включает в себя следующие компоненты:

  • nmvcore- универсальные низкоуровневые векторные функции с регистровым интерфейсом передачи параметров
  • nmppc - скалярные функции
  • nmppv - функции работы с векторами
  • nmppm - функции работы с матрицами
  • nmpps - функции обработки сигналов
  • nmppi - функции обработки изображений
  • nmblas - BLAS библиотека

Архитектуры

Поддерживаются архитектуры NMC3 и NMC4. Для NMC4 библиотеки разделяются по типу ядра: с плавающей точкой и целочисленной арифметикой.

Поддерживаемые процессоры :

Процессор/ядро nmc3 nmc4 nmc4f arm модули
1879ХБ1Я + + MB77.07,МВ73.02
К1879ВЯ1Я + + МС76.01
К1888ВС018 + + MB115.01
1879ВМ5(NM6406) + МС51.03
К1879ВМ6Я(6407) + + МС121.01
1879ВМ8Я(6408) + + МС127.05

Кроссплатформенность

Для отладки и прототипирования проектов на x86/64 архитектуре предоставляются библиотеки-эмуляторы в ОС Windows/Linux. Библиотеки точно имитируют исполнение функций для NeuroMatrix c побитовой точностью в x86/64-приложении . Функции имеют единый интерфейс и могут использоваться в кроссплатформенной (x86/NeuroMatrix) разработке приложений под Windows/Linux.

Также имеется ARM библиотека осуществляющая вызов NMC функций со стороны ARM-ядра средствами rpc (для систем на кристалле с ARM ядром):
/lib/libnmpp-arm-rpc.a В частности ,данная библиотека осуществляют взаимосвязь Matlab/Simulink с NeuroMatrix

Сборка

Сборка под NeuroMatrix осуществляется NMСGCC компилятором. Также поддерживается устаревший (legacy) компилятор. Эмуляторы библиотек собираются через VisualStudio/MinGW под Windows и GCC в Linux .

Установка NMPP

Системные требования

  • NeuroMatrix NMGCC-SDK Для сборки библиотек под NeuroMatrix gcc компилятором

  • Leqacy NeuroMatrix SDK (устаревшая версия SDK) Для сборки библиотек под NeuroMatrix предыдущим (legacy ) компилятором требуется NMSDK версией не ниже 3.07

  • x86/x64 SDK
    Для эмуляции NeuroMatrix функций из состава NMPP под x86/x64 возможна сборка библиотек с помощью Gnu GCC. http://www.mingw.org/ или http://win-builds.org/doku.php или Microsoft Visual Studio, и в частности версиями Express:
    Visual Studio 2005 Express
    Visual Studio Express

  • Сборка компонент (статические lib-библиотеки, тесты, примеры) построена на Makefile скриптах. Для корректного запуска сборочных Makefile-ов под Windows требуется установленный GNU make. Для ОС Windows рекомендуется версия make 3.81 (3.82- проявляет себя нестабильно).

  • Генерация сборочных проектов x86/x64 библиотек/тестов, в т.ч. для VisualStudio, осуществляется premake5 . Требуется версия не ниже premake-5.0.0-alpha15

  • Для запуска примеров на вычислительных модулях (МС51.03, МС121.01, МВ77.07 и др.) требуются библиотеки загрузки и обмена (БЗИО) с установленными соответствующими переменными окружения (MC5103, MC12101, MB7707... )

Пути к make, premake5 и GnuWin утилитам должны быть прописаны в PATH

Установить переменные окружения , все необходимые утилиты (make, premake5, GnuWin утилиты и пр.), ПО поддержки плат (БЗИО-библиотеки загрузки и обмена) под Windows можно с помощью инсталятора nmkit.

Сборка NeuroMatrix библиотек GCC компилятором (Windows/Linux)

Сборка библиотек осуществляется командой make из соответствующей архитектуре папки /make/nmpp-<archictecture> :

Команда Результат сборки
/nmpp/make/nmpp-nmc3> make nmpp/lib/libnmpp-nmc3.a
/nmpp/make/nmpp-nmc3> make DEBUG=y nmpp/lib/libnmpp-nmc3d.a
/nmpp/make/nmpp-nmc4> make nmpp/lib/libnmpp-nmc4.a
/nmpp/make/nmpp-nmc4> make DEBUG=y nmpp/lib/libnmpp-nmc4d.a
/nmpp/make/nmpp-nmc4f> make nmpp/lib/libnmpp-nmc4f.a
/nmpp/make/nmpp-nmc4f> make DEBUG=y nmpp/lib/libnmpp-nmc4fd.a

d - признак Debug версии библиотеки
f - признак библиотеки для ядра с плавающей точкой . Если без префикса - для целочисленного ядра.

Сборка NeuroMatrix библиотек Legacy компилятором

Сборка устаревшим компилятором возможна командой make с ключом legacy из соответствующей архитектуре папки /make/nmpp-<archictecture>:

Команда Результат сборки
/nmpp/make/nmpp-nmc3> make legacy nmpp/lib/nmpp-nmc3.lib
/nmpp/make/nmpp-nmc3> make legacy DEBUG=y nmpp/lib/nmpp-nmc3d.lib
/nmpp/make/nmpp-nmc4> make legacy nmpp/lib/nmpp-nmc4.lib
/nmpp/make/nmpp-nmc4> make legacy DEBUG=y nmpp/lib/nmpp-nmc4d.lib
/nmpp/make/nmpp-nmc4f> make legacy nmpp/lib/nmpp-nmc4f.lib
/nmpp/make/nmpp-nmc4f> make legacy DEBUG=y nmpp/lib/nmpp-nmc4fd.lib

Сборка x86/x64 библиотек

Генерация сборочных файлов/проектов для x86/64 архитектуры в Windows/Linux оcуществляется средствами premake5.
Сконфигурировать проект и собрать библиотеку можно одной из команд:

Команда Результат сборки
\nmpp\make\nmpp-x86-x64> make vs2015 nmpp\lib\nmpp-x86.lib
nmpp\lib\nmpp-x86d.lib
nmpp\lib\nmpp-x64.lib
nmpp\lib\nmpp-x64d.lib
\nmpp\make\nmpp-x86-x64> make gmake32 nmpp\lib\nmpp-x86.lib (Windows)
/nmpp/make/nmpp-x86-x64> make gmake64 nmpp/lib/libnmpp-x64.a (Linux)

x86/x64 эмуляторы библиотек включают в себя функции как с плавающей , так и с целочисленной арифметикой.

Возможные ключи make:

Ключ ОС Toolchain
vs2005 Windows MS Visual Studio 2005
vs2015 Windows MS Visual Studio 2015
vs2017 Windows MS Visual Studio 2017
gmake32 Windows MinGW
gmake64 Linux GCC

Команда nmpp\make\nmpp-x86-x64> make без ключа инициирует сборку под VS2015 в Windows и под GСС в Linux.

Настройка переменных окружения

Для удобства подключения библиотек к собственным проектам, а также к примерам и тестам рекомендуется использовать переменную окружения NMPP. В Windows cоздать переменную NMPP и присвоить ей путь к установленной папке NMPP можно с помощью команды
\nmpp\make\> make setenv

Сборка примеров и тестов

Для сборки тестов и примеров может быть необходим HAL со скомпилированными соответствующими библиотеками и прописанной переменной окружения HAL. Некоторые тесты и примеров идут только с исходными С++ текстами. Сконфигурировать сборочные проекты пакетно можно командой make configure из корневой папки с тестами или примерами, например:

\nmpp\app\examples-float\nmblas\> make configure
Далее собрать все проекты командой :
\nmpp\app\examples-float\nmblas\> make build
запуcтить все примеры поочердно:
\nmpp\app\examples-float\nmblas\> make run
Удалить все конфигуарции :
\nmpp\app\examples-float\nmblas\> make kill

Список платформ для которых будут сформированы сборочные проекты определяются в файле \nmpp\app\examples-float\nmblas\local.json и требуют редактирования под имеющиеся платы. Глобальные настройки находятся в \nmpp\app\global.json . Генерация проектов производится через копирование шаблонов , полный перечень которых сдержится в папке \nmpp\app\templates\sometest

Сборка и запуск отдельного примера также осуществляется командами make и make run из соответствующей папки /make_<board_core_compiler>, например:

\nmpp\app\examples-float\nmblas\level1\nmblas_dcopy\make_mc12101_nmpu0> make
запуcтить пример на плате:
\nmpp\app\examples-float\nmblas\level1\nmblas_dcopy\make_mc12101_nmpu0> make run
запуcтить пример на эмуляторе nmc-qemu:
\nmpp\app\examples-float\nmblas\level1\nmblas_dcopy\make_mc12101_nmpu0> make qemu

Должны быть установлены соответствующие переменные окружения к корневым каталогам ПО поддержки плат (MС5103,MC12101,MC12705 и .т.д.) Для генерации сборочных проектов требуется Python не ниже 3.6

Обратная связь:

Предложения , вопросы , замечания можно направлять на mushkaev@module.ru