Перейти до основного вмісту

Створіть Neat.

Цей посібник містить інформацію про створення Neat з вихідного коду. Інструкції щодо встановлення попередньо зібраного пакета див. у Neat Library.

build.sh — це основний скрипт для запуску процесу збирання. Він виконує перевірку залежностей, синхронізацію необов’язкових залежностей, налаштування та збирання за допомогою CMake, створення необов’язкової документації, перевірку правильності встановлення та створення пакета.

Середовища розробки

build.sh автоматично визначає активне середовище:

  • Modalix, нативне середовище DevKit.
  • Середовище Neat SDK (крос-компіляція).

Ви можете виконувати одні й ті самі команди build.sh в будь-якому з цих середовищ.

Необхідні умови для перехресної компіляції.

Перехресна компіляція зазвичай відбувається швидше, ніж безпосередня компіляція на DevKit, але після цього необхідно передати артефакти компіляції на DevKit. Для перехресної компіляції вам знадобиться Neat SDK.

Спочатку встановіть sima-cli на хост-машині, а потім встановіть SDK.

curl -fsSL https://artifacts.neat.sima.ai/sima-cli/linux-mac.sh | bash
sima-cli install sdk

Коли sima-cli запропонує, оберіть опцію SDK.

Потім запустіть SDK:

sima-cli sdk elxr

Потім встановіть sima-cli в межах SDK, а потім встановіть оновлення для SDK.

curl -fsSL https://artifacts.neat.sima.ai/sima-cli/linux-mac.sh | bash
source ~/.bash_profile
sima-cli install tools/sdk-patch
  • Встановлення SDK підтримується на операційних системах Windows та Ubuntu.
  • Якщо ви розробляєте програмне забезпечення безпосередньо для Modalix DevKit, встановлення або оновлення SDK не потрібне.

Параметри збірки

Підтримувані параметри build.sh:

  • --dev-only: Збирайте лише основну бібліотеку та файли заголовків (за замовчуванням).
  • --all: Створення бібліотеки + тестів + навчальних матеріалів + Python-пакета; увімкнення документації та залежностей.
  • --python: Створіть прив’язки Python (pyneat) на додаток до обраних цільових об’єктів.
  • --install-neat-internals, --install-deps: Завантажте та встановіть артефакти залежностей перед збіркою.
  • --doc: Створюйте лише документацію.
  • --install: Після збірки/пакування встановіть створені артефакти в поточне середовище. У режимі парної роботи Neat SDK, це також розгортає та встановлює відповідні артефакти на парному DevKit.
  • --no-dist: Пропустіть етап створення дистрибутивного пакета.
  • --clean: Видаліть build/ перед налаштуванням.
  • --no-doc: Пропустити процес створення документації (навіть якщо вказано --all).
  • --no-node: Пропустіть встановлення Node.js (збірка документації може завершитися невдало, якщо Node не встановлено).
  • --install-deps-only: встановіть системні залежності та заголовкові файли залежностей, а потім завершіть роботу.

Кеш компілятора

build.sh автоматично вмикає sccache, і його кеш залишається доступним після виконання команди --clean. Локальні збірки використовують локальний дисковий кеш користувача. Vulcan надає окремі захищені кеші для гілок develop і main; експериментальна гілка створює ізольований кеш, до якого можна здійснювати записи, на основі найближчої захищеної базової гілки та зберігає його до видалення гілки.

Див. Neat sccache. Короткий довідник. для отримання інформації про локальні налаштування, правила доступу до хмари, простори імен кешу, статистику, перевірку та усунення несправностей.

Типові конфігурації

Лише основна бібліотека (за замовчуванням):

./build.sh

Повна збірка (бібліотека, тести, навчальні матеріали, документація, пакет, пакування):

./build.sh --all

Основна бібліотека + прив’язки для Python:

./build.sh --dev-only --python

Тільки для документації:

Ця команда також працює на macOS.

./build.sh --doc

Під час створення документації генерується довідник API для Insight на основі специфікації OpenAPI, яку завантажує autodoc за адресою build/autodoc/insight/neat_insight/openapi.json. Для локальної розробки ви можете замінити значення за замовчуванням на INSIGHT_OPENAPI_SPEC:

INSIGHT_OPENAPI_SPEC=../insight/neat_insight/openapi.json ./build.sh --doc

Відносні шляхи перезаписуються, починаючи з кореневої директорії репозиторію Core, і перетворюються на абсолютні шляхи перед запуском генератора Docusaurus. Якщо вибраний файл не існує, крок генерації API Insight пропускається, і про це повідомляється.

Повна збірка з очищенням:

./build.sh --all --clean

Встановіть необхідні компоненти, не збираючи основний код:

./build.sh --install-deps-only

Результати

  • Створення дерева: build/
  • Результат створення сайту Docusaurus (під час виконання процесу збирання документації): website/build/
  • Встановлюємо префікс для перевірки цілісності: унікальна тимчасова директорія (${TMPDIR:-/tmp}/sima-neat-install-test.XXXXXX), яка відображається під час збірки; видаляється у разі успішного завершення, зберігається у разі невдачі для подальшого аналізу.
  • Пакети Neat з артефактами (*.deb) створюються під час повних збірок у Linux, якщо не використовується опція --no-dist.
  • Пакет додаткових компонентів (*extras.tar.gz) створюється під час повної збірки в Linux, якщо не використовується параметр --no-dist.
  • Пакет Python у форматі wheel (dist/*.whl) створюється, коли ввімкнено збірку Python.

Пакет Python wheel містить розширення _pyneat_core, створене під час основної збірки CMake. Під час створення пакета wheel не відбувається налаштування або повторна компіляція окремого дерева CMake, тому бібліотека, пакети DEB, додаткові архіви та пакет wheel використовують одну й ту саму компіляцію.

Створення профілів і параметрів CMake

Основний файл CMakeLists.txt фреймворку містить декілька параметрів, які визначають, що саме буде зібрано та яким чином. Параметри, перелічені нижче, є найважливішими.

Створюйте профілі.

Ця платформа підтримує три визначені профілі:

ПрофільПриклад використанняЩо було скомпільовано?
ВиробництвоВерсії програмного забезпечення, призначені для кінцевих користувачів.Усі загальнодоступні вузли, завантаження з архіву моделей, Modalix, оптимізовані.
РозробникІнженери, які розробляють програмні платформи.Набір для розробки + налагодження вузлів + розширена діагностика + тестування.
Ізольоване середовищеБагатоарендне розгортанняНабір для розробки + посилені стандартні налаштування безпеки для архіву моделей.

Обирайте під час налаштування через -DSIMA_NEAT_PROFILE=Production|Developer|Sandbox, або прийміть значення за замовчуванням у файлі CMakeLists.txt.

Найпоширеніші параметри CMake

ВаріантЗа замовчуваннямЕфект
SIMA_NEAT_BUILD_TESTSON (Розробник)Зберіть набір тестів gtest. Відключіть його для прискорення процесів безперервної інтеграції під час створення виробничих версій.
SIMA_NEAT_BUILD_TUTORIALSOFFЗберіть виконувані файли для навчального посібника.
SIMA_NEAT_BUILD_PYTHONONЗберіть модуль pyneat nanobind.
SIMA_NEAT_BUILD_INTERNALSOFF (загальнодоступний)Створіть внутрішній проміжний шар конвеєра (core/src/pipeline/internal/sima/).
SIMA_NEAT_ENABLE_TVM_FALLBACKONСкомпілюйте резервні ядра, що підтримуються TVM, для операцій, які не може обробляти MLA.
SIMA_NEAT_ENABLE_RTSPONСтворіть вузли джерела/приймача RTSP.
SIMA_NEAT_DEBUG_PLUGINSOFFПеренаправляйте вивід налагодження плагіна GStreamer у стандартний вихідний потік (stdout).
SIMA_NEAT_USE_SYSTEM_GSTREAMERON (хост) / OFF (перехресний)Замість того, щоб включати його до складу, використовуйте системну версію GStreamer для встановлення зв’язку.
SIMA_NEAT_WARN_AS_ERROROFFПідвищуйте пріоритет попереджень під час компіляції, перетворюючи їх на помилки. Рекомендовано для систем безперервної інтеграції (CI).

Налаштування інструментарію

Для перехресної компіляції, орієнтованої на Modalix:

cmake -B build \
-DCMAKE_TOOLCHAIN_FILE=cmake/modalix.cmake \
-DSIMA_NEAT_PROFILE=Production

Для розробки на стороні хоста:

cmake -B build -DSIMA_NEAT_PROFILE=Developer

Щоб перелічити, які властивості доступні у вашого об’єкта:

cmake -L -B build # list all cache variables
cmake -LA -B build # include advanced

Файл CMakeLists.txt найвищого рівня є джерелом істини для назв параметрів.