Каталог ядер 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— постобробка декодування блоку.