Intel® Threading Building Blocks

Cross Process Load Balancing / Oversubscription

I have two application which use TBB for parallelism. Due to security/stability aspects these two applications need to run in separate processes. Both are quite cpu intensive.

The problem with this is that if I just let TBB initialise with the normal thread count it will oversubscribe my system. One strategy I have tried is to set a specific amount of TBB threads for each device (e.g. 3 for one and 5 for the other). This works kind of well. However, it is suboptimal as the workload balance between the two processes is not constant.

Flow Graph Dynamically Adding/Removing Nodes

I would like to be able to dynamically add/remove nodes to/from a Flow Graph.

As far as I understand this is possible by simply using make_edge/remove_edge while the graph is running.

However, from the documentation I recall reading that a node cannot be destroyed until wait_for_all has been called on the graph. Which makes removing nodes from the graph a bit tricky as in my application I either don't call wair_for_all or when I call it I have incremented its ref count so that it doesn't return until the application ends.

Getting core ID during tbb program execution ?


I would like to build an animation showing the // execution of a TBB kernel. I tought that It would be nice to use different colors in order to identify which core is doing what. For this purpose I would need the ID of the core that executes a given part of my programm (and dump it in an execution log file).

Is it possible in the TBB context ?





icpc: error #10104: unable to open 'tbb_pLaCeHoLdEr'

I was trying to compile a boost+Intel TBB code using intel compiler (ICC-13.0.1) The TBB library is latest (4.2) and boost is 1.55.0. The code incorporates C++11 features and so I use the std=c++11 flag

I am getting this error: 

    icpc: error #10104: unable to open 'tbb_pLaCeHoLdEr'
    make: *** [driver.o] Error 1

Subscribe to Intel® Threading Building Blocks