New adaptation policy
This commit is contained in:
+48
-5
@@ -1,6 +1,49 @@
|
||||
# Наблюдения и ограничения
|
||||
|
||||
## Что уже установлено
|
||||
## Текущая focused-постановка
|
||||
|
||||
Активное исследование больше не использует старую benchmark-матрицу. Оно
|
||||
сравнивает только три варианта `AdaptiveSequence<uint32_t, true>` с одинаковым
|
||||
flat hash: forced vector, forced tiered и resize-bound adaptive. Mixed workload
|
||||
фиксирован: 97% индексных чтений, 1% hash find (50% hit / 50% miss), 1% вставок
|
||||
и 1% удалений.
|
||||
|
||||
Automatic policy меняет mode, `leaf = ceil(sqrt(N))` и размер hash table только
|
||||
при изменении логической capacity. Рост capacity идёт `x2`; один shrink-шаг
|
||||
`/2` выполняется при заполнении 12.5%. Поэтому цена перехода входит в измерение,
|
||||
но ни storage, ни hash не перестраиваются после каждой отдельной операции.
|
||||
|
||||
## Final focused run и cutoff
|
||||
|
||||
Baseline focused-run с 7 повторами и 100000 mixed operations подтвердил
|
||||
локальный crossover между двумя соседними размерами. При `N=2048` mixed median
|
||||
forced vector равна **31.98M ops/s**, а forced tiered — **32.18M ops/s**:
|
||||
преимущество tiered по медиане составляет лишь **0.618%**, при этом tiered
|
||||
быстрее в **4 из 7**, а vector — в **3 из 7** paired repeats. Эта граница
|
||||
считается неустойчивой и попадающей в шум измерения. При `N=4096` forced tiered
|
||||
дал **32.53M ops/s**, forced vector — **17.20M ops/s**, а adaptive с включённым
|
||||
в timer переходом `vector -> tiered` — **32.64M ops/s**. Медиана tiered выше
|
||||
vector в **1.8911 раза**, и tiered быстрее во всех **7 из 7** paired repeats.
|
||||
|
||||
Поэтому для текущего `uint32_t` workload принят **cutoff 4096** как первый
|
||||
однозначный и устойчивый размер в sweep. Это подтверждённый результат
|
||||
focused-серии, но всё ещё калибруемая граница, а не
|
||||
универсальная константа для других типов и workload. Полная таблица медиан по
|
||||
mixed/read/find/insert/erase и методика опубликованы в
|
||||
[`20260813-focused-resize/README.md`](../results/benchmarks/20260813-focused-resize/README.md);
|
||||
raw повторы находятся в
|
||||
[`20260813-focused-resize/baseline.csv`](../results/benchmarks/20260813-focused-resize/baseline.csv).
|
||||
В CSV 189 строк: у всех строк корректные счётчики операций, checksums совпадают
|
||||
между тремя кандидатами для каждой пары `(N, repeat)`, а режимы и leaf отдельных
|
||||
read/find/insert/erase batches записаны отдельными столбцами.
|
||||
|
||||
## Historical / retired benchmark evidence
|
||||
|
||||
Все результаты ниже относятся к прежним workload, кандидатам и policy. Они
|
||||
сохранены для аудита истории, но **не участвуют** в выборе текущего cutoff и не
|
||||
сравнимы напрямую с focused benchmark.
|
||||
|
||||
### Что было установлено старой методикой
|
||||
|
||||
На Ryzen 9 5900X / MSVC 19.51 quick-tuning дал разные оптимумы, поэтому
|
||||
фиксированный `leaf=512` отвергнут как итоговая стратегия. Для baseline
|
||||
@@ -26,7 +69,7 @@
|
||||
доказательство, а сигнал, что старую таблицу leaf нужно заново проверить на
|
||||
одинаковом quick holdout с тремя профилями.
|
||||
|
||||
## Hysteresis и итоговый quick-checkpoint
|
||||
### Hysteresis и итоговый quick-checkpoint
|
||||
|
||||
После v13 выполнены три контрольные серии:
|
||||
|
||||
@@ -138,7 +181,7 @@ adaptive-deferred sequential `uint32` найден устойчивый AVX2 cod
|
||||
1.85–1.98x относительно baseline во всех пяти повторах при верных checksums.
|
||||
Он требует отдельного анализа generated code, а не постфактум объяснения SIMD.
|
||||
|
||||
## Large-scale sweep до 100 миллионов элементов
|
||||
### Large-scale sweep до 100 миллионов элементов
|
||||
|
||||
Серии [`large v1`](../results/benchmarks/20260811-large-full-12c-v1/README.md)
|
||||
и [`seed-jittered v2`](../results/benchmarks/20260811-large-n100m-512edit-12c-v2/README.md)
|
||||
@@ -160,7 +203,7 @@ fixed oracle: до первого перехода он успевал выпо
|
||||
делят L3/DRAM, а N>1M имеет один repeat на профиль. Поэтому SIMD-профили сохранены
|
||||
отдельно, но точный AVX2 speedup по этой серии не утверждается.
|
||||
|
||||
## Чего пока нельзя утверждать
|
||||
### Чего нельзя было утверждать по retired-сериям
|
||||
|
||||
- Не доказано, что adaptive implementation уже имеет geometric mean > 1 против
|
||||
лучшего фиксированного контейнера на независимом full holdout.
|
||||
@@ -183,7 +226,7 @@ fixed oracle: до первого перехода он успевал выпо
|
||||
зафиксированной версии компилятора project-novec, но не публичный контракт
|
||||
MSVC и не доказательство отсутствия SIMD внутри CRT или x64 runtime.
|
||||
|
||||
## Следующая исследовательская граница
|
||||
### Бывшая исследовательская граница
|
||||
|
||||
Phase-aware hysteresis завершён и прошёл трёхпрофильный quick-validator.
|
||||
Следующий этап — независимый full holdout с несколькими seeds, affinity/pinning
|
||||
|
||||
Reference in New Issue
Block a user