Skip to content

v0.17.0-rc.1

Pre-release
Pre-release

Choose a tag to compare

@almuleev almuleev released this 10 Oct 12:52
· 23 commits to main since this 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; его время не заменяет сравнимые замеры выше.

  1. Откройте большой файл, выберите небольшой отображаемый фрагмент.
  2. В FRF выберите опору и отклики, включите «Вид → АЧХ: вся запись».
  3. Задайте допустимое явное 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.

  1. Open a large file and select a small display fragment.
  2. Select reference/response roles in FRF and enable View → FRF: entire recording.
  3. 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)*8 bytes 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.