Skip to content

Propagation engines

schlangster edited this page May 24, 2014 · 1 revision

The update propagation strategy is implemented by a propagation engine. This library originated as a research project to compare multiple parallel propagation algorithms; however, those that did not perform well have been removed or consolidated, so three distinct engines remain:

Engine Description
Toposort Single-threaded propagation with minimum overhead. Also supports parallelism.
Pulsecount Scalable parallel updating at the cost of additional overhead.
Subtree A hybrid approach between single-threaded Toposort and Pulsecount to balance overhead and parallel utilization.

Selecting an engine

As a general guideline, if your graph consists of trivial operations only, parallelization is not worth it, so use Toposort<sequential>.

If it mostly consists of expensive operations, use Pulsecount<parallel>.

If it contains some expensive operations but mostly trivial nodes, use Subtree<parallel>.