> Klaus> Some things were very easy, if there are no spatial dependencies,
> Klaus> then you just split the image in vertical slices and have each
> Klaus> thread process each slice, very easy and scales very well.
>
> Obviously. Most photo manipulations can be written as transformation
> matrices and could in principle be split into a separate thread per
> pixel.

Only the final color transform is a simple matrix.
As I wrote, they are split vertically - thread synchronization is
expensive, so a per-pixel thread is

> Klaus> The sharpen/denoiser required a job/workqueue to be efficient.
>
> Why's that? Isn't that basically just the same thing as above except
> with a bit of (read-only) overlap?

No it isn't - it a very advanced algorithm, that denoises and sharpens
in FFT (frequency domain) space. It is not completely unlike the
wavelet denoiser in dcraw, but it is much better at preserving detalis
in the denoiser and preventing oversharpining.

The processing is done in blocks of 128x128 pixels, so it was obvious
to create a job queue for handling these blocks.

I have a writeup planned, where I will write how it differs from
ordinary sharpen/denoisers.

> Klaus> Basic render (color correct), demosaic, denoise/sharpen, lensfun
> Klaus> (the processing done outside of liblensfun), resample (image
> Klaus> resize), rotate.
>
> What other filters could we expect to be parallelised in future?
There are currently are no (slow) filters that are not multithreaded.


> Klaus> Furthermore the RawSpeed loader is multithreaded when possible
> Klaus> (DNG images).
>
> Why can't they all be multi-threaded?
As I wrote above, Lossless JPEG is impossible to multithread. I have
done some tests where I split the decoder up in two parallel stages,
but the memory overhead and synchronization made it quite a bit
slower.

> Thanks for the status update. It's quite interesting.

No problem. :)


> Martin

Regards, Klaus Post

http://www.klauspost.com

_______________________________________________
Rawstudio-dev mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-dev

Reply via email to