On Tue, Jun 16, 2009 at 6:31 AM, Martin Nordholts<[email protected]> wrote:
> One caching strategy that I think we will come pretty far with is to
> handle caching in a wrapper function to GeglOperation::process(). That
> is, the GeglEvalVisitor would not call GeglOperation::process() directly
> but instead something like GeglOperation::do_process(). This method
> would contain common logic for caching. If caching is turned off, it
> would simply call GeglOperation::process() and not do much more. If
> caching is turned on, it would not bother calling
> GeglOperation::process() and instead just return what it has cached.
> This strategy would also collect caching to a common place instead of
> spreading it across the GeglEvalVisitor and the GeglNeedVisitor (former
> GeglCrVisitor).
>
> The wrapper function GeglOperation::do_process() would also be a natural
> place to have logic for turning off the "visibility" or "activeness" of
> a node. When a node is invisible/inactive, it acts as a gegl:nop and
> just passes its input directly to its output. That will allow us to
> easily implement toggling the visibility of traditional layers, and also
> toggling the "visibility" of layer effects such as a blur or emboss.
The current approach where the common logic in the node/processing
code creates the destination GeglBuffer for the computation is already
well separated. GeglOperation::do_process doesn't beloing inside
GeglOperation but would be a new name for the current (and perhaps
extended) functionality of figuring out how to create the GeglBuffer
for computation.
> Another thing worth mentioning is that caches on every node doesn't
> scale well to concurrent evaluation of the graph since the evaluators
> would need to all the time synchronize usage of the caches, preventing
> nice scaling of performance as you use more CPU cores/CPUs.
In most instances, this would only incur synchronization of a few
tiles where the chunks/work regions overlaps. Unless you are stupid
and compute with chunk-size~=tile-size the impact of this should be
mostly neglible.
--
«The future is already here. It's just not very evenly distributed»
-- William Gibson
http://pippin.gimp.org/ http://ffii.org/
_______________________________________________
Gegl-developer mailing list
[email protected]
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gegl-developer