Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.

When is a Task Graph not a Tree?

New Contributor I
When it's logged...hahaha... sorry, couldn't resist.

I was asked this question "When is a task graph not a tree in TBB?" I couldn't think of a good answer. Does anyone have an example of a task graph that isn't a tree?

0 Kudos
1 Reply
Black Belt
I suppose technically it's a forest, because there can be multiple root tasks. If you want to simulate a directed acyclic graph of dependencies (examples aplenty), you have to find a supporting tree (would that always be a subgraph?) that is represented directly in TBB (which doesn't do dags), and fill in the missing dependencies by adding empty_task children of the dependent tasks to be explicitly spawned by their dependencies on completion (or use release_ref() as implemented in the "Pipeline" thread).