Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.

projects using tbb flow

Philip_M_
Beginner
947 Views

I have a C++ development project for which tbb::flow seems to be an ideal library or framework to use. But outside of Intel articles and papers I have not seen much or any usage of tbb::flow. This only bothers me because if tbb::flow is a good as it seems to be when reading about it, I would expect it to be more widely used or at least used a few projects. That I cannot find more/any usage of tbb::flow makes me worried. Is there something wrong with tbb::flow that projects do not use it? Is there some alternative that is more popular? (Not necessarily better but more popular?)

So my question is: what are good example projects that use tbb::flow? Please note that I am not trying to criticize tbb::flow or start an argument. I am just trying to find out where tbb::flow is used, so I can make a more informed decision about whether I should use tbb::flow.

Thanks!

0 Kudos
5 Replies
Aleksei_F_Intel
Employee
947 Views

Hi Philip,

I am sorry, but I think that we cannot disclose some of the TBB Flow Graph customers as I am not sure we have permission from them to do so. So, I can only post here what I was able to find in public:

- World of Tanks as it is indicated in the co-authored paper.
- Testimonials page at threadingbuildingblocks.org contains explicit mention of TBB Flow Graph component by Pacific Northwest National Laboratory
- "Driving Code Performance with Intel® advisor’s flow graph analyzer" from 30-th issue of Parallel Universe Magazine uses TBB Flow Graph for advanced driver assistance systems (ADAS).

Finally, many projects on github, including:
- https://github.com/dcarp/ProcessingFlow
- https://github.com/WireCell/wire-cell-tbb a part of bigger framework https://wirecell.github.io/
use this component from TBB library.

You can also search for tbb/flow_graph.h and tbb/tbb.h (as it also includes flow_graph.h and users might just include the main TBB header for simplicity) in the projects on public code platforms.

Regards,
Aleksei

0 Kudos
Philip_M_
Beginner
947 Views

Aleksei,

Thanks for your response. I understand that your customer list is proprietary and you cannot share that. I am, however, hoping you can share a longer list of non-trivial open source projects that are using tbb::flow. What you found in public is similar to what I found--not much. The papers all have a link to Intel, and one of the github projects you mention, ProcesingFlow, is a one-off experiment that is not a good demonstration of why/how I should move to tbb::flow. And the skeptic in me does not put stock into a testimonial quote unless I see evidence. (We have all used technologies that at the time seemed to work great but break down after usage and are later abandoned.)

The second github project you mention, WireCell is a great and substantive example. But it is only one. What are other good examples of projects that use tbb::flow? (Note it is hard to find good examples because more of the search hits turn out to be from other projects including the tbb source code in their project. So most of the finds on github are redundant tbb examples.) In my search on github for projects using tbb::flow the most active that I found was https://github.com/cpp-taskflow/cpp-taskflow, which is a counter-example claiming to provide an improved alternative to tbb::flow.

So I am still looking for evidence that tbb::flow is an implementation choice that is actively used (outside of Intel). I realize that this is a somewhat specialized field and do not expect tbb::flow to be popular. I am, however, looking for a handful of projects to validate that using tbb::flow is the right path for my development team. With the growth in computer vision and deep learning, why is tbb::flow not being used in at least a few projects in those communities?

Thanks again for your time.

0 Kudos
Aleksei_F_Intel
Employee
947 Views

Philip M.,

I understand your position. Indeed, it is always better to secure your choice.

For now for the closed source projects I can only say that there are customers of TBB flow graph among them. However, I don't think it would make any difference for you if I was able to get their approval to disclose that fact, would not it?

As far as open source software is concerned, I will get back to you once I have something to share.

Regards, Aleksei

 

0 Kudos
Philip_M_
Beginner
947 Views

Aleksei,

From your question about it making a difference, I see I have not communicated well with this post. Knowing that N non-trivial software development efforts are using tbb::flow absolutely makes a difference to me--even if they are closed source, proprietary Intel clients. If they are ALL in that category, then my followup question is why is tbb::flow not used in the open source community? tbb (and tbb::flow) is open-source with a liberal license. It looks to provide a perfect solution for efficient scaling of a single process to multiple cores. Why is there not a handful of open source project using tbb::flow? So, yes, knowing that tbb::flow is used in products X, Y, and Z is very helpful. But if WireCell is the only substantive open source project using tbb::flow, then it makes me wonder why? And that makes me wonder what do I need to do and how much do I need to spend to get Intel's help so that my product can benefit from tbb::flow?

Let me know if you feel this conversation should be continued offline.

Phil

0 Kudos
Aleksei_F_Intel
Employee
947 Views
0 Kudos
Reply