Skip to content

v0.16.7

Choose a tag to compare

@almuleev almuleev released this 07 Oct 13:27
· 28 commits to main since this release

AMSignal-0.16.7-performance-results.json · Скачать EXE / Download EXE · SHA-256

Русский

  • Многоканальный FFT и пакетный H1 используют общие вычисления без изменения исходной длины и определения анализа.
  • Сохранены параметры и ограничения замеров; рост пика памяти указан в полном журнале.

English

  • Multi-channel FFT and batch H1 reuse shared work while preserving input length and analysis definitions.
  • Measurement conditions and limitations are retained; the full notes record the higher peak memory cost.
Полный прежний журнал / Full original release notes

Русский

Ускорены многоканальные FFT и пакетный расчёт H1/АЧХ без изменения исходной
длины записи, Fs, частотной сетки или математического определения анализа.
Этот выпуск также включает ранее не опубликованные изменения v0.16.6.

Изменения

  • Несколько откликов FRF используют общий расчёт арифметического среднего
    выбранных Reference до Welch. Один проход по сегментам переиспользует окно,
    удаление среднего и FFT опоры, Sxx, порог слабого входа и спектр опоры.
    Syy/Sxy, комплексный H1, coherence, маски и ошибки остаются отдельными.
    Преобразования всех сегментов не хранятся. Одиночная пара сохраняет прежний путь.
    Для семи откликов и 328 сегментов число FFT уменьшается с 4592 до 2624.
  • Независимые FFT-каналы при N>=65536 обрабатываются постоянным пулом до четырёх
    участников, включая вызывающий поток. Один канал, малые записи и занятый пул
    используют последовательный путь. Результаты и исключения собираются в
    исходном порядке после завершения всех задач. Входные массивы не меняются.
  • Число участников учитывает доступные процессоры и оценку рабочих массивов
    и сохранённых планов. Бюджет 384 MiB относится к планировщику, а не ко всей
    памяти процесса. GUI явно отменяет и завершает FFT-worker до разрушения пула.
  • Из v0.16.6: проверки отмены radix-2 между блоками максимум 16384 butterfly
    без перезапуска рекуррентного twiddle; один завершённый thread_local план
    chirp/FFT ядра Bluestein до 64 MiB на поток. Отменённый план не публикуется,
    большие планы временные. Математика этих оптимизаций сохранена.
  • Отрисовка, кэши GUI, библиотека FFT, точность, нормировка, Hann, overlap,
    remove_mean и правила масок не менялись. Fast-math не используется.

Проверенные результаты

Медианы семи повторов после семи прогревочных повторов, test1.lvm,
Ryzen 5 5600X, GCC 14.2.0, Release -O2, Windows Power saver.
База этих замеров — v0.16.6, а не предыдущий публичный выпуск v0.16.5.
Таймер FFT включает подготовку шкалы/каналов и амплитуд; таймер FRF включает
by-value копию входа, усреднение/проверки, Welch, H1/coherence и спектр опоры.
Загрузка файла и отрисовка вне таймеров. Ускорения отдельных направлений
не складываются и не гарантируются на другом оборудовании.

Расчёт До, мс После, мс
FFT, 8 каналов, N=4096 1,091 1,085
FFT, 8 каналов, N=262144 151,05 51,59
FFT, 8 каналов, N=337132 595,03 327,46
H1/coherence, 1 опора / 1 отклик, mean=false 38,62 39,03
H1/coherence, 1 опора / 7 откликов, mean=false 210,36 135,87
H1/coherence, 1 опора / 7 откликов, mean=true 210,77 135,88

FRF: N=337132, L=2048, периодический Hann, overlap=50%, K=328.
Пик commit процесса для полного FFT вырос с 122 до 256 MiB (включая загрузку
и исходные массивы). Отмена до join: измеренный максимум 4,77 мс FFT и
2,52 мс FRF; замена полной записи коротким заданием — около 16 мс, только
новое поколение результата. Эти максимумы не являются верхней гарантией задержки.

Все 26 случаев совпали с базой побайтно: частоты, амплитуды, комплексный H1,
coherence, спектр опоры, validity-маски и NaN. Внешний стенд выполнил 7592
точные проверки против замороженных исходников, включая Direct, произвольные
длины, слабую/нулевую опору, NaN/Inf, переполнение, независимые ошибки откликов,
gaps и конкурентные FFT. Контроль одиночных путей в одном процессе не
подтвердил существенного ухудшения: максимум +2,6% FFT и +1,6% FRF.
Отдельные процессы дают больший разброс; причина каждого выброса не установлена.

Прошли 340 численных и 334 GUI-проверки, полные сборки CLI и GUI.
GUI-регрессии охватывают общий участок, роли, секции/разрывы, кэши,
несколько кривых, шкалы, CSV/PNG и завершение worker. Реальная end-to-end
задержка GUI и отрисовка отдельно не измерялись. Системные настройки не менялись.

Файлы выпуска

  • AMSignal-0.16.7-x64.exe — GUI для Windows x64.
  • AMSignal-0.16.7-performance-results.json — таблица 26 измеренных случаев,
    данные памяти и протокол побайтового сравнения; исходная запись не включена.
  • SHA256SUMS.txt — контрольные суммы приложенных файлов.

Соответствующие исходники доступны в теге v0.16.7. Лицензия — GNU GPLv3.

English

Multi-channel FFT and batch H1/FRF are faster while preserving the original
record length, Fs, frequency grid and mathematical analysis definition.
This release also includes the previously unpublished v0.16.6 changes.

Changes

  • Multiple FRF responses share the arithmetic sample mean of selected references
    before Welch. One segment pass reuses the window, reference mean removal/FFT,
    Sxx, weak-input threshold and reference spectrum. Syy/Sxy, complex H1,
    coherence, masks and errors remain independent. Segment FFTs are not retained
    as a bank. A single pair retains its previous path. Seven responses with
    328 segments require 2624 FFTs instead of 4592.
  • Independent FFT channels at N>=65536 use a persistent pool of up to four
    participants, including the caller. Single channels, small inputs and callers
    encountering a busy pool use the sequential path. Results and exceptions are
    collected in original channel order after all jobs complete; input arrays
    remain unchanged.
  • Scheduling considers available processors and estimated workspaces/retained
    plans. Its 384 MiB allowance is not a process memory limit. GUI exit explicitly
    cancels and joins the FFT worker before pool destruction.
  • From v0.16.6: radix-2 cancellation checks between chunks of at most 16384
    butterflies without restarting recurrent twiddles; one completed thread_local
    Bluestein chirp/kernel FFT plan up to 64 MiB per thread. Cancelled plans are
    not published; larger plans are temporary. Arithmetic is preserved.
  • Rendering, GUI caches, FFT library, precision, normalization, Hann, overlap,
    remove_mean and mask rules are unchanged. Fast-math is not enabled.

Measured validation

Medians of seven repeats after seven warm-up repeats, test1.lvm, Ryzen 5 5600X,
GCC 14.2.0, Release -O2, Windows Power saver. The baseline for these
measurements is v0.16.6, not the previous public release v0.16.5.
FFT timing includes timeline/channel preparation and amplitudes; FRF timing
includes the by-value input copy, averaging/validation, Welch, H1/coherence and
reference spectrum. File loading and rendering are outside the timers.
Independent speedups are not added or guaranteed on other hardware.

Calculation Before, ms After, ms
FFT, 8 channels, N=4096 1.091 1.085
FFT, 8 channels, N=262144 151.05 51.59
FFT, 8 channels, N=337132 595.03 327.46
H1/coherence, 1 reference / 1 response, mean=false 38.62 39.03
H1/coherence, 1 reference / 7 responses, mean=false 210.36 135.87
H1/coherence, 1 reference / 7 responses, mean=true 210.77 135.88

FRF: N=337132, L=2048, periodic Hann, 50% overlap, K=328. Full FFT peak
process commit increased from 122 to 256 MiB, including file loading/input
arrays. Maximum observed cancel-to-join: 4.77 ms FFT and 2.52 ms FRF.
Replacing the full record with a short job took about 16 ms and returned
only the new generation. Observed maxima are not guaranteed latency bounds.

All 26 cases matched the baseline byte for byte: frequencies, amplitudes,
complex H1, coherence, reference spectrum, validity masks and NaNs. An external
harness passed 7592 exact checks against frozen sources, including Direct,
arbitrary lengths, weak/zero reference, NaN/Inf, overflow, independent response
errors, gaps and concurrent FFT calls. In-process single-path controls did not
confirm a substantial regression: maximum +2.6% FFT and +1.6% FRF.
Separate processes show more variation; each outlier's cause was not established.

Passed 340 numerical and 334 GUI checks, and full CLI/GUI builds.
GUI regressions cover the common selection, roles, sections/gaps, caches,
multiple curves, scales, CSV/PNG and worker shutdown. Real end-to-end GUI
latency and rendering were not separately benchmarked. System settings were
not changed.

Release files

  • AMSignal-0.16.7-x64.exe: Windows x64 GUI.
  • AMSignal-0.16.7-performance-results.json: all 26 measured cases, memory
    data and bytewise comparison results; the input recording is not included.
  • SHA256SUMS.txt: checksums of attached files.

Corresponding source code is available at tag v0.16.7. Licensed under GNU GPLv3.