Tootfinder

Opt-in global Mastodon full text search. Join the index!

@azonenberg@ioc.exchange
2026-01-01 07:03:03

Starting to look at some performance improvements for various scopehal filters as I begin the push for v0.2.
The benchmark dataset is P/N legs of 100baseTX Ethernet sampled at 500 Msps with a ThunderScope.
At 50M point memory depth, each waveform is 100 MB in size (2 channels * 8 bits * 500 Msps) and covers 100ms of real time.
The filter graph currently takes just shy of a second to run, meaning we're at 10% of real time. I want to improve on this.

ngscopeclient displaying an 3-level eye pattern and waveform
ngscopeclient filter graph showing a differential pair being subtracted, followed by CDR and an eye pattern
@azonenberg@ioc.exchange
2026-01-27 00:56:51

Current summary of all of the GPU acceleration work I've been doing in ngscopeclient since v0.1.1.
Other than the CDR PLL and eye pattern which were high-priority targets that were worth the effort, and the Ethernet which I got nerdsniped on, these are all trivial inner loops of just a few lines that I threw at the GPU without any significant tuning, so there's probably more performance upside.
But I'm not complaining with what I've pulled off so far. (As you ca…

Logarithmic bar graph of filters and the speedups obtained since shipping v0.1.1

Filter  Speedup
AC Couple       10
Average 5.6
Base    17
CDR PLL 7.5
Clip    4
DDJ     16
Downconvert     5.8
Downsample (AA filter)  16.3
Downsample (no AA)      22
Duty Cycle      8
Emphasis        13.2
Envelope        14.5
Ethernet - 100baseTX    10
Eye pattern     25
Histogram       12
PAM Edge Detector       2
TIE     5.3
Vector Frequency        1040
Vector Phase    243