24mm10-bis: twins = radix-4 complex FFT-2048, raw normalization (INV+ffe0(2^-12), FWD none); twiddles inline in plan capture; q-paradox not in normalizations -> need live intermediate states
This commit is contained in:
@@ -4160,4 +4160,37 @@ q=1 → rms 0.022 дБ; q=0.8 → 0.0065 дБ (медиана, 60 кадров).
|
|||||||
3. Windows/x64dbg-MCP (если доступен хост): брейкпоинт на 52b644..52b893,
|
3. Windows/x64dbg-MCP (если доступен хост): брейкпоинт на 52b644..52b893,
|
||||||
дамп FIR после каждого из 6 шагов для одного кадра — закрывает всё.
|
дамп FIR после каждого из 6 шагов для одного кадра — закрывает всё.
|
||||||
|
|
||||||
|
## 24mm10-бис: итог статического разбора близнецов (раунд «добить q»)
|
||||||
|
```
|
||||||
|
Ядра 181b853e0(INV-core)/181b81b80(FWD-core): 3130 строк почти развёрнутого
|
||||||
|
AVX2-кода (60 jcc, 4 боевых петли), БЕЗ внутренних вызовов; единственные
|
||||||
|
float-константы ±0.707107 (+ знак-маска 0x80000000) в собственном статике
|
||||||
|
@0x186ee7dxx (в дампе есть). Это radix-4/split-radix КОМПЛЕКСНЫЙ FFT
|
||||||
|
половинного размера (count=N/2=2048 от воркера), специфицированный под
|
||||||
|
размер (jump-table по log2n в воркере выбирает ядро).
|
||||||
|
Нормировок внутри НЕТ (ни одной vmulps на константу ≠±1/√2).
|
||||||
|
INV-воркер добавляет ffe0(2^-12) ([obj+0xc]=1), FWD-воркер НЕ добавляет
|
||||||
|
([obj+8]=0). Твидлы плана лежат инлайн после заголовка плана (захват buf548:
|
||||||
|
квады cos(π/8)-класса @f32-индекс 560+, пары sin|cos дальше);
|
||||||
|
указатели plan[+0x30]/[+0x38]/[+0x50]/[+0x58] — кучные адреса этих таблиц
|
||||||
|
(вне дампа), разность [+0x38]−[+0x30]=0x230Б=140 f32.
|
||||||
|
Инструмент: /tmp/opencode/avx_interp.py (мини-интерпретатор AVX/FMA-
|
||||||
|
подмножества; баги cmp-as-sub и RIP-rel исправлены; довести до прогона —
|
||||||
|
упёрлось в управление потоком на таблицах, см. probe2/probe3.py).
|
||||||
|
```
|
||||||
|
ВЫВОД: пара INV/FWD == пара numpy.irfft/rfft (подтверждено трижды).
|
||||||
|
Парадокс q (модель требует аргумент×0.8, все масштабы зафиксированы)
|
||||||
|
⇒ причина НЕ в нормировках ядер, а в том, ЧТО реально лежит в FIR-буфере
|
||||||
|
в момент γ-кадров: офлайн-гипотезы о стадиях исчерпаны, кадры полиморфны.
|
||||||
|
Необходимо наблюдение ЖИВОГО состояния (варианты 2/3 выше), либо полный
|
||||||
|
декод управления потоком близнеца (петли по стадиям, r13/r14 walk —
|
||||||
|
частично картирован: r13=work, add/sub rbp, add 0x40/0x100).
|
||||||
|
|
||||||
|
### Скорректированные мелочи dataflow этого раунда
|
||||||
|
- Порядок: copy → opA(INV) → FIR[n]=0 → fold×2 → zero[2049..] → opB(FWD)
|
||||||
|
(FIR[n]=0 стоит ПОСЛЕ opA, обнуляет временной отсчёт t[N/2], не вход!)
|
||||||
|
- В модели убрать h[-1]=0 перед irfft (Найквост входа НЕ обнулялся).
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user