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 .
-
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.
Сборка библиотек осуществляется командой 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 - признак библиотеки для ядра с плавающей точкой . Если без префикса - для целочисленного ядра.
Сборка устаревшим компилятором возможна командой 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/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
Предложения , вопросы , замечания можно направлять на [email protected]