Performance enhancements
This MR collects a few performance enhancements:
- The computational time of the
pixel.masks.update()
RD53A function is reduced to ~60%, by JITing the slowest part of the assembly of pixel register data. This mainly speeds up steps where the complete mask is written by ~ 0.8 s (configuration step, TDAC tuning iteration). Fast scans (e.g. digital/analog scan) will profit by a few seconds (10%-25%) depending on the PC. The new data stream to write pixel registers is exactly the same to the old one. That is also checked in dedicated unit tests.
2. Use mask creation in software parallel to hardware injection loop. This feature was effectively there since a long time, but somehow we missed to activate it. It is activated now and gives on the hardware_runner PC a speed up of 15% for the digital scan without analysis. Peak CPU usage for the main process is reduced from 68% to 55% (just looking at htop). The time spend doing nothing, while waiting for the injections to finish reduces from 6.2 s --> 3.4 s. not implemented
- Speed up command encoding using numba --> 20% speed up for writing commands for RD53A/B. Decreases scan time of digital scan by ~ 3s or 10%.
Edited by David-Leon Pohl