ratt-ru / pfb-imaging

Preconditioned forward/backward clean algorithm
MIT License
7 stars 5 forks source link

Simpler wavelet implementation with vertical parallelism #93

Closed landmanbester closed 6 months ago

landmanbester commented 6 months ago

The old wavelet code made heavy use of generated_jit and was a much more general than what is needed in pfb. This PR replaces the old wavelet code with a much simpler version that doesn't rely on generated_jit and only has the required functionality. The new Psi operator written in terms of this uses less memory because it uses a different parallelisation strategy that is also more compatible with how things are parallelised in other parts of pfb viz. horizontal over band and vertical (i.e. low memory overhead) over wavelets. Initial testing shows that, while the individual decompositions are about a factor of 2 faster than PyWavelets, there is only a slight improvement in speed for the parallelised version of Psi. The memory consumption is a lot more stable though. There may still be aspects to improve by i) also going horizontal over wavelet basis and ii) using @JSKenyon's implementation which seems to parallelise slightly better