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

Модель пам’яті

Core планує сховище, а Scheduler готує пули через Runner. Runner керує ідентичністю виділень, відображеннями DMA-BUF і доступом CPU/пристроїв.

Виділення та подання​

Кожен етап має один незмінний FrameLayout: список FrameAllocation, локальні діапазони FrameSpan, вхідні маршрути та володіння виходами. Діапазон задає виділення, зміщення й зарезервовану місткість. Логічна форма тензора, кроки та опубліковані байти є окремими фактами. Апаратне доповнення MLA має вміщатися в зарезервовану місткість.

Подання спільно використовують кореневий носій. Індекси виділень належать групі буферів: нульові зміщення в різних групах не означають перекриття. Імпортоване сховище зберігає експортер, перевірені зміщення, геометрію площин і позики виробника.

Для щільного числового Tensor із прив’язаним сховищем форма {} означає скаляр рангу нуль: щільний розмір дорівнює одному елементу dtype. Це відрізняється від форми з нульовою довжиною виміру, наприклад {0,256}, щільний розмір якої дорівнює нулю. Щільне копіювання байтів і clone() зберігають значення скаляра, перевіряючи зміщення подання та межі сховища. Для стандартного Tensor без сховища dense_bytes_tight() повертає нуль; щільне копіювання та клонування відхиляються. Носії, явно позначені як кодовані, байтові потоки, тесельовані або текстові, зберігають свою семантику байтів носія. Діапазон байтів, який повертає публічний map(), не змінюється.

Розміщення​

Core вибирає маршрути й виконавців, компілює перевірені рецепти, визначає носії та володіння, а потім пакує їх на основі доступів і доведених часів життя. Розмітка етапів і публікація остаточно визначаються один раз.

  • Будь-який доступ EV74 потребує CMA.
  • Власні носії лише для MLA/A65 типово використовують DMS.
  • Нові публічні виходи A65, що відповідають умовам, можуть використовувати HostCpu.
  • Імпортоване сховище залишається закріпленим. Розгалуження враховує всіх споживачів; подання зберігають політику носія.

AllocationPolicy::PreferDmsThenCma явно дозволяє відповідним власним DMS-виділенням перейти на CMA за браку місткості. Перехід на звичайну пам’ять Linux не дозволений. Межі Queue, незалежні виклики моделі та утримані виходи зберігають обмеження володіння й часу життя.

Для EV74 Preproc → MLA → A65 BoxDecode вхід інференсу використовує CMA, а вихід MLA використовує окреме DMS-виділення. Фактичне розміщення залежить від визначених виконавців усіх споживачів.

Володіння та відображення CPU​

Вихід без копіювання утримує сховище й позику виробника, доки застосунок зберігає його. Scheduler і Runner утримують входи пристрою до підтвердженого завершення. Самі тайм-аут чи скасування не дозволяють повторне використання.

Використовуйте TensorBuffer::map() із відповідним MapMode. Mapping утримує перевірений доступ і сховище до закриття. Сумісні читання можуть співіснувати; записи залишаються виключними. Потрібне обслуговування кешу виконується перед читанням CPU та після запису, зі збереженням сусідніх байтів кеш-лінії. Сховище з помилкою синхронізації ізолюється.

Власні кешовані CMA і DMS використовують допущений діапазонний API SimaHeap. Імпортовані буфери зберігають контракт експортера. Наступні етапи лише для пристроїв не відкривають епоху читання CPU; доступ CPU не виводиться з назви вузла або позиції графа. Внутрішні пакети CPU утримують батьківський об’єкт до завершення всіх дочірніх доступів.

Оболонки метаданих можуть ділити пам’ять без копіювання даних, але перетворення типу, явні передачі та вихід Owned можуть копіювати байти. Відсутність копіювання не означає виконання кожного етапу на місці.

Буфери камери​

CameraInput перевіряє розмітку захопленого DMA-BUF і утримує батьківський буфер камери, доки ним користуються споживачі. Сумісні буфери зберігають сховище й геометрію площин. Якщо потрібна адаптація розмітки й увімкнено allow_cpu_fallback, міст створює явну копію в CMA. Адаптація джерела відокремлена від попередньої обробки моделі.

Пов’язані типи​

  • TensorBuffer: сховище та подання.
  • Segment: утриманий діапазон виділення.
  • Mapping: доступ CPU у межах області.
  • MemoryContract: оголошені вимоги вузла до пам’яті.