[Bf-committers] Compositor speedup proposal [1/2]

Jeroen Bakker j.bakker at atmind.nl
Tue Jan 29 12:08:58 CET 2013


This is a proposal to solve speed-issues of the compositor. It should 
not be considered as the final solution, but should help the most common 
issues.

Problem statement.
The compositor works best when having a good mixture of simple and 
complex nodes. If you have a lot of simple nodes the system is not able 
to find a good balance when converting to execution groups (subprogram 
that will be scheduled to a core of the CPU). It results in a few 
execution groups with many simple operations and a small number of 
buffers that store intermediate results. This slows down the system a 
lot 
[http://projects.blender.org/tracker/?func=detail&aid=33785&group_id=9&atid=498]. 
A workaround for this slowdown was to add a complex node (that doesn't 
do anything, like blur 0) in the setup.

First test shows that good result depends on the node tree setup and the 
available memory of the system. We propose to split up execution groups 
into smaller ones if they get too big. The split up will depend on two 
variables:
1. amount of memory in the system (not free memory)
2. number of operations in an execution group

As this mechanism does a lot of guesses, the user should be able to 
manually control the number of cuts.

During tests we saw the next results
Used file: file attached to issue #33785
Used system: Intel(R) Core(TM) i5 CPU M 580 @ 2.67GHz, with 8GB of 
memory, ubuntu 12.04 64 bit:
  - Baseline (no changes to code): 861MB, 47.49 seconds
  - Limit execution group size to 10: 3424MB, 7.267 seconds
  - Limit execution group size to 15: 3289MB, 7.607 seconds
  - Limit execution group size to 20: 2884MB, 9.393 seconds
  - Limit execution group size to 25: 2884MB, 11.987 seconds

Best regards,
Jeroen & Monique
  - At Mind -


More information about the Bf-committers mailing list