🔵Аппаратная архитектура
Теперь вернёмся к более практическим вопросам, в именно в тому, как такая архитектура может выглядеть на реальном FPGA.
В моей версии декодер состоит из следующих блоков.
Landmark memory хранит координаты m landmarks в формате fixed-point. Для m = 256, размерности признаков d = 16, ширины слова 16 бит требуется 256*16*16 = 64 Kбит, что укладывается в BRAM-блоки большинства устройств без обращения к внешней памяти.
Distance computation unit вычисляет d(w, l_i) для всех landmarks параллельно. При евклидовой метрике каждый PE состоит из вычитателя, умножителя и аккумулятора. Для m = 256 на платах типа Versal уходит так же 256 DSP-блоков.
Witness identification logic выполняет top-k выборку расстояний для каждого наблюдения и проверяет на условие включения симплекса.
Simplex memory хранит текущий комплекс в sparse CSR/CSC представлении, совместимом с алгоритмом boundary matrix reduction.
Persistence computation block реализует boundary matrix reduction. Алгоритм Twist Edelsbrunner-Harer использует столбцовую параллелизацию, что означает, что независимые столбцы редуцируются одновременно. На FPGA это пул воркеров с общей очередью пивотов.
Post #107
123
- ❤🔥 1