Repository navigation
v0.17.0-rc.1
Pre-releaseСкачать EXE / Download EXE · SHA-256
Русский
- Блочная АЧХ для больших записей: H1/coherence рассчитываются через временный дисковый снимок без полной сборки входа в RAM.
- Сохранена численная методика: Welch, окно Hann, перекрытие и порядок накопления применяются ко всей записи.
- Меньше лишних копий: общая FFT опоры и совместный исполнитель Spectrum/FRF ускоряют обработку.
- Надёжнее фоновые задачи: усилены отмена, смена документа, обработка ошибок чтения и завершение потоков.
- Улучшен интерфейс: включены исправления легенды, подписей осей, единиц и компоновки из v0.16.8–v0.16.11.
Предварительный выпуск для проверки на рабочих записях. Подробный отчёт и результаты испытаний приложены к релизу.
Нужен временный диск; бюджет 384 MiB относится к численным данным, а не всему процессу. Дискового алгоритма обычного FFT в этой версии ещё нет. Универсальная поддержка любых больших файлов не заявляется.
English
- Streaming FRF for large recordings: H1/coherence use a temporary disk snapshot without assembling complete input in RAM.
- Preserved numerical method: Welch, Hann window, overlap and accumulation apply across the complete recording.
- Fewer redundant copies: shared reference FFT and a common Spectrum/FRF executor improve processing.
- Stronger background-task handling: improved cancellation, document changes, read errors and thread teardown.
- Interface improvements: includes legend, axis-label, unit and layout fixes from v0.16.8–v0.16.11.
Pre-release for validation on real working recordings. The detailed report and validation results are attached.
Temporary storage is required; the 384 MiB budget covers numerical data, not the entire process. This version does not yet provide a disk algorithm for ordinary FFT. Universal large-file support is not claimed.
Полный журнал, проверки и ограничения / Full changelog, validation and limitations
Русский
AMSignal v0.17.0-rc.1 — предварительный выпуск блочного H1/coherence для
больших записей с ограничением численных рабочих массивов и кэшей.
Исходники выпуска: коммит 17404d7.
Выпуск предназначен для проверки на реальных рабочих записях; универсальная
поддержка любых конфигураций файлов 10–20 ГБ не заявляется.
Изменения
- Выбранные исходные физические столбцы читаются блоками через существующий
индекс и чтение диапазона. Нормализация времени, состояние секций и
соответствие каналов после удаления повторного времени сохраняются.
Численный анализ никогда не использует визуальную min/max-огибающую. - Большой FRF-вход — неизменяемый временный дисковый снимок средней опоры
и откликов. Полные массивы записи предварительно не собираются в RAM.
Для Fs сохранено точное правило типичного шага: полная внешняя сортировка
сериями по 8 MiB и слияние до 32 серий. Сжатая сортировка не внедрена. - Welch перекрывает границы блоков. Hann, длина L, перекрытие, усреднение опор
до FRF, порог слабого входа и спектр средней опоры сохранены. Sxx/Syy/Sxy
накапливаются в прежнем порядке; H1 и coherence финализируются после всей
записи. Готовые FRF блоков не усредняются; FFT опоры общая для всех откликов. - Radix-2 FFT выполняется в рабочих массивах. Произвольные допустимые длины
сохраняют dft/Bluestein. Удалены лишние полные копии общей опоры и времени,
ненужное суммирование при remove_mean=false и повторный разбор числовых
строк. Быстрая проверка комплексных компонент сохраняет abs-проверку
больших значений для обнаружения переполнения модуля. - Spectrum и FRF используют общий исполнитель до четырёх участников,
включая вызывающий поток. Последовательный путь остаётся для малых задач,
занятого исполнителя и недостаточного бюджета параллелизма. FRF допускает
параллелизм при K>=7 и L>=256; Spectrum — при N>=65536 и нескольких каналах. - Бюджет 384 MiB учитывает численные массивы, результаты и фактические
сохранённые планы. Он не ограничивает весь процесс. Auto/Direct не сокращают
L скрыто: слишком большой сегмент даёт ResourceLimit. - Worker хранит один вход до 64 MiB RAM и 256 MiB диска. Более крупный снимок
удаляется после задания. Кэши обработки ограничены 128 MiB на документ,
результаты FFT/FRF неактивных документов — вместе 256 MiB. Большие формулы
имеют поэлементный путь. Данные, настройки и разметка при вытеснении сохраняются. - Численный ключ отделён от поколения задания; учитывает файл, участок,
роли, формулы, фильтр и raw/processed. Оформление и его Undo/Redo не запускают
новый численный расчёт. Изменённый источник требует открытия заново. - Причинный фильтр сохраняет состояния между блоками, сбрасывая их только
по прежним условиям. Участок прогревается от начала загруженной записи;
фильтрация всей записи требует дополнительного прохода определения Fs.
Сложные формулы сохраняют порядок аффинной/тождественной обработки GUI. - Файлы больше 512 MiB сначала индексируются. GUI ограничивает оценку Dataset
512 MiB. «Вид → АЧХ: вся запись» анализирует индексированный источник,
сохраняя маленький фрагмент графика и отдельное выделение FFT. - Перед выпуском усилены проверки временных файлов, диапазонов чтения,
отмены, смены документов и завершения обоих worker. Ошибка дискового снимка
возвращает ResourceLimit и не публикует частичный результат. - На используемой Windows/MinGW сборке стресс воспроизвёл повреждение памяти
при конкурентном завершении коротких FFT-потоков с эмулируемым TLS,
в том числе на исходной v0.16.11. Windows-кэш переведён на системный FLS
с освобождением при выходе потока; остальные платформы сохраняют thread_local. - Относительно предыдущего публичного релиза v0.16.7 также включены изменения
v0.16.8–v0.16.11: терминология и единицы замеров, общий фильтр во вкладке FRF,
управление легендой каналов, внешние пользовательские подписи осей,
компактная компоновка и исправление крайних частотных подписей.
Проверенные результаты
База сравнения производительности — v0.16.11. Windows, Ryzen 5 5600X,
32 GiB RAM, GCC 14.2, -O2 без fast-math, профиль Power Saver.
Малые серии: прогрев и семь чередующихся учитываемых запусков; ниже медианы.
FRF: одна опора, семь откликов, L=2048, remove_mean=false.
| Реальная запись, N=337132, 49 938 563 байта | До | После |
|---|---|---|
| Чтение | 1631,22 мс | 1463,43 мс |
| Подготовка | 8,76 мс | 8,30 мс |
| Численный расчёт | 121,95 мс | 56,44 мс |
| Повтор без чтения | 121,05 мс | 56,86 мс |
| Пик Working Set процесса стенда | 65,70 MiB | 57,03 MiB |
Численная часть ускорилась примерно в 2,16 раза. Она включает перенесённые
проверки и общий исполнитель; это не изолированный замер ускорения FFT.
При N=4096 и семи откликах выигрыш численной части около 5,5%, а пик памяти
увеличился примерно на 0,25 MiB. Универсальное улучшение всех малых задач не заявляется.
| Синтетическая запись | 10 000 000 000 байт | 20 000 000 000 байт |
|---|---|---|
| N | 47 390 720 | 94 785 536 |
| L / K | 2048 / 46 279 | 2048 / 92 563 |
| Индексирование | 97,39 с | 196,45 с |
| Чтение и подготовка | 203,28 с | 407,77 с |
| Численный расчёт | 8,97 с | 19,92 с |
| Свежий повтор с чтением/подготовкой | 214,88 с | 431,85 с |
| Пик Working Set / commit | 17,45 / 16,63 MiB | 26,31 / 25,71 MiB |
| Временный снимок | 3,03 GB | 6,07 GB |
Большие записи — плотные несжатые ASCII-файлы с известными сигналами,
восемью каналами и сбросами локального времени. Пики относятся к отдельному
численному стенду, а не к интерактивному GUI. Размер файла, N и L разделены.
Большие измерения выполнены до последних защитных правок времени жизни,
ошибок I/O и формул; первичные хеши и подробности сохранены в отчёте.
Старый загрузчик остановлен явным лимитом испытания 2 GiB до полного чтения;
полного сопоставимого старого расчёта 10/20 GB нет, кратность для него не вычисляется.
Прошли 457 проверок ядра в 12 полных запусках подряд и 425 GUI-проверок.
Отдельный стресс завершил 3000 FFT-потоков без сбоя и остаточного плана;
штатный набор дополнительно содержит 768 короткоживущих FFT-потоков.
15 362 827 сравнений с замороженной v0.16.11 и 12 434 787 сравнений реальной
записи дали измеренную погрешность 0. Сравнивались комплексный H1, coherence,
спектр опоры, частоты, маски, статусы и метаданные. Проверены N=4096/337132,
один/семь откликов, несколько опор, mean on/off, степенные/произвольные L,
Direct/Auto, gaps, слабая опора, NaN/Inf, переполнение, границы блоков,
16 конфигураций фильтра, отмена, замена задания и смена документа.
На больших синтетических файлах максимальная абсолютная ошибка H относительно
известных коэффициентов — до 4,45×10⁻¹⁵, свежие повторы совпали точно.
Использование и риски предварительного выпуска
Дополнительный контроль текущего ядра коммита 17404d7 прошёл на всём файле
20 GB: N=94 785 536, L=2048, K=92 563, семь откликов. Расчёт и численный
повтор дали 21 564 совпадения, ошибка 0. Пик Working Set стенда — 23,97 MiB.
Этот повтор использовал ещё живой снимок внутри одного контрольного процесса,
а не большой кэш worker; его время не заменяет сравнимые замеры выше.
- Откройте большой файл, выберите небольшой отображаемый фрагмент.
- В FRF выберите опору и отклики, включите «Вид → АЧХ: вся запись».
- Задайте допустимое явное L, например 2048. Auto/Direct всей большой записи
могут превышать численный бюджет; их длина не сокращается автоматически.
- Нужен свободный временный диск для
N*(R+1)*8байт снимка и точной сортировки.
TMP/TEMP выбирают расположение. Большой повтор перечитывает источник.
Аварийное завершение процесса может оставить временные каталоги. - 384 MiB не ограничивают память нескольких Dataset, истории, метаданных
и графических индексов. Большой обычный FFT не получил дискового алгоритма. - Полный интерактивный GUI-прогон и фильтрованный прогон 20 GB не измерены.
Такие конфигурации требуют дальнейшего испытания на реальных записях. - Источник проверяется по размеру и mtime, не по хешу содержимого. Изменения
с сохранением обеих отметок могут остаться незамеченными. Не изменяйте
источник во время анализа; после изменения откройте его заново. - Переключатель всей записи пока не сохраняется в формате проекта.
- Нового сопоставимого замера FAMOS нет; превосходство над FAMOS не заявляется.
GitHub Actions для тега и main завершился успешно на Windows и Linux:
проверка тега,
проверка main.
Полный результат контрольного 20 GB прогона текущего коммита побайтно
совпадает с предыдущим оптимизированным замером. Контрольные суммы готового GUI приведены в SHA256SUMS.txt.
Файлы выпуска
AMSignal-0.17.0-rc.1-x64.exe— Windows x64 GUI.AMSignal-0.17.0-rc.1-validation.json— компактные измерения и результаты проверок.AMSignal-0.17.0-rc.1-validation-RU.md— подробный отчёт и ограничения испытаний.SHA256SUMS.txt— контрольные суммы вложений.
Соответствующие исходники доступны в теге v0.17.0-rc.1. Лицензия — GNU GPLv3.
Самостоятельные файлы записей 10/20 GB в Git и выпуск не включены.
English
AMSignal v0.17.0-rc.1 is a pre-release of bounded-memory block H1/coherence
for large recordings, with limited numerical workspaces and caches.
Source commit: 17404d7.
This build is intended for validation on real workloads; it does not claim
universal support for every 10–20 GB file configuration.
Changes
- Selected physical source columns stream through the existing index/range
reader. Timeline normalization, section state and channel mapping after
duplicate time removal remain intact. Numerical analysis never uses the
display min/max envelope. - Large FRF input uses an immutable disk snapshot of the averaged reference
and responses. Whole-record arrays are not assembled in RAM. Exact Fs
inference retains every interval via 8 MiB sorted runs and up to 32-way
external merging. The rejected compressed-sort experiment is not used. - Welch overlap continues across block boundaries. Hann, L, overlap,
reference averaging before FRF, weak-input rules and reference spectrum
are preserved. Sxx/Syy/Sxy accumulate in the original segment order;
H1/coherence finalize once over the entire recording. Finished block FRFs
are not averaged. All responses share the reference FFT. - Radix-2 FFT transforms working arrays in place; arbitrary supported lengths
retain dft/Bluestein. Removed redundant full reference/time copies,
disabled-mean sums and duplicate numeric-row parsing. Component checks
retain abs checks for large finite components to detect magnitude overflow. - Spectrum and FRF share an executor of up to four participants including
the caller. Small tasks, busy admission and insufficient parallel memory
use a sequential path. FRF parallelism requires K>=7 and L>=256; Spectrum
requires N>=65536 and multiple channels. - The 384 MiB allowance includes numerical arrays/results and actual retained
plans, not the entire process. Auto/Direct never silently shorten L;
an oversized segment returns ResourceLimit. - Worker retains one input up to 64 MiB RAM / 256 MiB disk; larger snapshots
are deleted after each job. Processing caches have a 128 MiB document
budget and inactive-document FFT/FRF results share 256 MiB. Large formulas
can evaluate per sample. Eviction preserves source data/settings/annotations. - Numerical keys are separate from job generations and include source,
interval, roles, formulas, filtering and raw/processed state. Appearance
changes and their Undo/Redo retain numerical results. Changed files must
be reopened. - Causal filter state continues across blocks with the original reset rules.
Selected intervals warm up from the loaded recording's start; whole-source
filtering needs an extra Fs pass. Complex formulas retain GUI affine/identity
arithmetic order. - Files larger than 512 MiB are indexed first; GUI Dataset allocation uses
a conservative 512 MiB estimate. View → FRF: entire recording analyzes the
indexed source while retaining the small display fragment and FFT selection. - Pre-release review strengthened scratch I/O, range, cancellation, document
switch and worker shutdown checks. A damaged spool returns ResourceLimit
without publishing a partial numerical result. - On the tested Windows/MinGW build, short-lived FFT thread stress reproduced
heap corruption with emulated TLS, including the original v0.16.11.
Windows caches now use native FLS cleanup on thread exit; other platforms
retain thread_local storage. - Compared with the last public release v0.16.7, this also includes v0.16.8–11:
terminology/measurement units, the shared FRF filter tab, channel legend
visibility, external editable axis captions, compact layout and edge-tick fixes.
Measured validation
Performance baseline: v0.16.11. Windows, Ryzen 5 5600X, 32 GiB RAM,
GCC 14.2, -O2 without fast-math, Power Saver. Small results are medians of
seven alternating measured runs after warm-up. FRF: one reference, seven
responses, L=2048, remove_mean=false.
| Real record, N=337132, 49,938,563 bytes | Before | After |
|---|---|---|
| Reading | 1631.22 ms | 1463.43 ms |
| Preparation | 8.76 ms | 8.30 ms |
| Numerical calculation | 121.95 ms | 56.44 ms |
| Repeat without reading | 121.05 ms | 56.86 ms |
| Harness peak Working Set | 65.70 MiB | 57.03 MiB |
The numerical batch is about 2.16× faster, including moved checks and the
shared executor; this is not an isolated FFT speedup. At N=4096 with seven
responses, numerical speedup is about 5.5% while peak memory rises about
0.25 MiB. Improvements are not universal for every small task.
| Synthetic record | 10,000,000,000 bytes | 20,000,000,000 bytes |
|---|---|---|
| N | 47,390,720 | 94,785,536 |
| L / K | 2048 / 46,279 | 2048 / 92,563 |
| Indexing | 97.39 s | 196.45 s |
| Reading/preparation | 203.28 s | 407.77 s |
| Numerical calculation | 8.97 s | 19.92 s |
| Fresh repeat including reading/preparation | 214.88 s | 431.85 s |
| Peak Working Set / commit | 17.45 / 16.63 MiB | 26.31 / 25.71 MiB |
| Temporary snapshot | 3.03 GB | 6.07 GB |
These are dense uncompressed ASCII files with known signals, eight channels
and local timestamp resets. Peaks describe a separate numerical harness,
not interactive GUI memory. File bytes, N and L are distinguished.
Large measurements preceded the final lifetime, scratch I/O and formula guards;
original hashes and details are preserved in the report. The old loader
hit an explicit 2 GiB test limit before completing either file; there is
no comparable complete old 10/20 GB calculation or speedup ratio.
Passed 457 core checks in 12 consecutive full runs and 425 GUI checks.
A separate stress completed 3000 FFT threads without failure or retained
plan leaks; the standard suite additionally includes 768 short-lived threads.
15,362,827 frozen-v0.16.11 comparisons and 12,434,787 real-record comparisons
measured error 0 across complex H1, coherence, reference spectrum, frequencies,
masks, status and metadata. Coverage includes N=4096/337132, one/seven responses,
multiple references, mean on/off, power-of-two/arbitrary L, Direct/Auto,
gaps, weak reference, NaN/Inf, overflow, block boundaries, 16 filter settings,
cancellation, replacement jobs and document switches. Large synthetic signals
show maximum absolute H error up to 4.45×10⁻¹⁵; fresh repeats match exactly.
Use and pre-release risks
An additional verification of current commit 17404d7 processed the complete
20 GB file: N=94,785,536, L=2048, K=92,563, seven responses. Calculation and
numerical repeat passed 21,564 comparisons with error 0; harness peak Working
Set was 23.97 MiB. This repeat used a still-live snapshot inside one verification
process, not a large worker cache; its timing does not replace the measurements above.
- Open a large file and select a small display fragment.
- Select reference/response roles in FRF and enable View → FRF: entire recording.
- Set a supported explicit L, for example 2048. Whole-record Auto/Direct
can exceed the numerical allowance; lengths are never shortened silently.
- Scratch disk needs
N*(R+1)*8bytes plus exact interval sorting space.
TMP/TEMP select its location. Large repeats reread the source. Abrupt
process termination may leave temporary directories. - 384 MiB does not cap multiple Datasets, history, metadata or graphics indexes.
Full ordinary FFT has no out-of-core algorithm. - Interactive GUI and fully filtered 20 GB workloads were not measured;
these configurations need further validation with real recordings. - Source checking uses size and mtime, not a content hash. Edits preserving
both stamps may go undetected. Keep sources unchanged during analysis and
reopen them after editing. - The entire-recording toggle is not persisted in project format yet.
- No new comparable FAMOS measurement was performed; superiority is not claimed.
GitHub Actions for the tag and main passed on Windows and Linux:
tag run,
main run.
The complete current-commit 20 GB verification output is byte-identical to
the earlier optimized measurement. The ready-to-run GUI checksum is listed in SHA256SUMS.txt.
Release files
AMSignal-0.17.0-rc.1-x64.exe: Windows x64 GUI.AMSignal-0.17.0-rc.1-validation.json: compact measurements and validation results.AMSignal-0.17.0-rc.1-validation-RU.md: detailed Russian report and test limitations.SHA256SUMS.txt: checksums of attached files.
Corresponding source is available at v0.17.0-rc.1, licensed under GNU GPLv3.
The 10/20 GB source recordings are not included in Git or release assets.