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

Каталог ядер CVU та графів.

У складі фреймворку є невелика довідка з ядрами CVU (EV74), які об’єднуються в графі попередньої та подальшої обробки, що використовуються планувальником для кожної моделі. На цій сторінці описано ядра та групи графів, з яких вони складаються.

Родини ядерних функцій

Виконайте попередню обробку ядра.

Прокладіть кабель EV74 між вхідним роз’ємом і модулем MLA. Стандартна лінійка:

  • Зміна розміру — білінійна / найближча масштабована обробка, з можливістю застосування чорних смуг зверху та знизу або кадрування по центру.
  • Перетворення колірної моделі — RGB ↔ BGR, NV12 → RGB, I420 → RGB, GRAY8 ↔ упакований формат.
  • Зміна порядку розташування каналів — HWC ↔ CHW, зміна порядку осей.
  • Нормалізація — обчислення середнього значення/стандартного відхилення для кожного каналу (вхідні дані: FP32, вихідні дані: FP32).

Граничні ядра

Забезпечте підтримку форматів FP32 / BF16 / INT8 для обчислень, що перетинають межі MLA:

  • Квантування — перетворення з FP32 у INT8 із застосуванням коефіцієнта масштабування та значення нульової точки.
  • Dequant — перетворення з INT8 у FP32 із застосуванням коефіцієнта масштабування та значення нульової точки.
  • Тип даних — FP32 ↔ BF16 (без масштабування / без зсуву).
  • Tess / Detess — зміна розташування елементів у структурі плиток MLA. Ті самі дані, але в іншому порядку.

Об’єднані ядра

Комбінації, які планувальник обирає, коли контракт моделі передбачає використання граничних ядер, але не включає їх на етапі MLA:

  • QuantTess — поєднання понять «Quant» і «Tess».
  • DetessDequant — поєднання термінів Detess і Dequant.
  • CastTess / DetessCast — об’єднайте Cast і Tess на шляху BF16.

Універсальний препроцесор.

Коли застосунок надає довільні визначені користувачем перетворення, планувальник оновлює граф попередньої обробки до загальної версії, яка об’єднує ці перетворення в єдине ядро CVU. Умови на межі MLA не змінюються.

Розкодування даних

Ядро постобробки, яке об’єднує NMS (немаксимальне придушення) і декодування для моделей виявлення об’єктів. Генерує DetectionMeta у вихідному зразку. Див. BoxDecodeType.h.

Як будуються графи.

Чотири значення PreprocessGraphFamily відповідають чотирьом ланцюгам ядра:

Сімейство графівЛанцюжок (вхід → MLA)
PreprocЗміна розміру → Перетворення кольору → Нормалізація → MLA (яка виконує внутрішню теселяцію)
QuantЗміна розміру → Перетворення кольору → Нормалізація → Квантування → MLA (який виконує внутрішню теселяцію)
TessЗміна розміру → Перетворення кольору → Нормалізація → Теселяція → MLA
QuantTessЗміна розміру → Перетворення кольору → Нормалізація → Квантування за допомогою Tesseract → MLA

Подвійний процес на вихідній стороні — Postproc / Detess / DetessDequant / пряма передача — залежить від того, чи містить скомпільоване ядро MLA функції detess/dequant.

Див. умова щодо типу даних, щоб зрозуміти, чому існують ці чотири типи.

Правила іменування ядра

У межах цієї структури на ядра посилаються за допомогою стабільних рядкових імен, які відображаються в RoutePlanner під час прийняття рішень, а також у рядках таблиці часу роботи плагіна/ядра MeasureReport:

  • cvu/preproc/<variant> — попередньо обробіть ядра.
  • cvu/quant/<dtype> — варіанти квантування.
  • cvu/tess/<geometry> — варіанти теселяції.
  • cvu/postproc/box_decode_<type> — Варіанти BoxDecode.

Точний каталог знаходиться в core/src/pipeline/internal/sima/ (проміжний шар структури).

Для подальшого ознайомлення

  • «Каталог ядер CVU та графів» — §86, §87 розділу, присвяченого детальному аналізу проєкту.
  • «Теселяція, квантування, розгортання» — §17 розділу, присвяченого детальному аналізу дизайну.
  • PreprocessGraphFamily — перелік із чотирьох можливих значень.
  • BoxDecodeType.h — постобробка декодування блоку.