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

TBB 2018 API graph flow

Timocafé
Beginner
1,008 Views

Hello Intel,

You have release TBB 2018 U1. Unfortunately my graph flow program does not link any more. I downgrade to TBB 2017 U6.

Did you update the API of TBB graph flow ?

Best

Tim

Undefined symbols for architecture x86_64:
  "tbb::interface5::internal::task_base::destroy(tbb::task&)", referenced from:
      tbb::flow::interface10::graph::~graph() in synapses.cpp.o
      tbb::flow::interface10::graph::~graph() in neurons.cpp.o
  "tbb::interface7::internal::task_arena_base::internal_terminate()", referenced from:
      tbb::interface7::task_arena::terminate() in synapses.cpp.o
      tbb::interface7::task_arena::terminate() in neurons.cpp.o
  "tbb::interface7::internal::task_arena_base::internal_initialize()", referenced from:
      tbb::interface7::task_arena::initialize() in synapses.cpp.o
      tbb::interface7::task_arena::initialize() in neurons.cpp.o
  "tbb::task_group_context::reset()", referenced from:
      tbb::flow::interface10::graph::wait_for_all() in synapses.cpp.o
      tbb::flow::interface10::graph::wait_for_all() in neurons.cpp.o
  "tbb::task_group_context::~task_group_context()", referenced from:
      tbb::flow::interface10::graph::~graph() in synapses.cpp.o
      tbb::flow::interface10::graph::~graph() in neurons.cpp.o
  "tbb::interface7::internal::task_arena_base::internal_execute(tbb::interface7::internal::delegate_base&) const", referenced from:
      void tbb::interface7::task_arena::execute_impl<void, tbb::flow::interface10::graph::wait_functor const>(tbb::flow::interface10::graph::wait_functor const&) in synapses.cpp.o
      void tbb::interface7::task_arena::execute_impl<void, tbb::flow::interface10::graph::wait_functor const>(tbb::flow::interface10::graph::wait_functor const&) in neurons.cpp.o

 

 

0 Kudos
10 Replies
Nikita_P_Intel
Employee
1,008 Views

Hi Tim,

there were incompatible changes, that required to increase interface version of Flow Graph in 2018 Gold. You can see the changes on release notes page.

Thanks,

Nikita

0 Kudos
Timocafé
Beginner
1,008 Views

 

Thank you for the answer. I know the webpage but the informations are not really detailed:

  • Internal layout changes in some flow graph classes;

  • Several undocumented methods are removed from class graph, including set_active() and is_active().

  • Due to incompatible changes, the namespace version is updated for the flow graph; recompilation is recommended for all binaries that use the flow graph classes.

Did you change the namespace tbb::flow if yes by what ?

Cheer

Tim

 

0 Kudos
Nikita_P_Intel
Employee
1,008 Views

We changed naming from tbb::flow::interface9 to tbb::flow::interface10. That is what means under "namespace version is updated".

Nikita

0 Kudos
Timocafé
Beginner
1,008 Views

 

Thank you for the fast answer. I am not going so deeply with namespace. I am limited to tbb::flow. I am investigating to know which change break my program. 

Best

Tim

0 Kudos
Nikita_P_Intel
Employee
1,008 Views

By the way, are you sure that you link with the right TBB version? It seems that linker can't find the library, because we didn't touch task_arena interfaces.

Maybe older TBB version is installed in your system?

Nikita

0 Kudos
Timocafé
Beginner
1,008 Views

I did uninstall and try install with two package manager:

  • brew
  • spack 

We remark the last version of 2017 work. However we are not able to run correctly with the 2018. I feel a "package mistake" I am currently compiling TBB from the src.

Best

Tim

 

 

 

0 Kudos
Timocafé
Beginner
1,008 Views

Hello,

 

The status it the following. Testing 3 machines (mac) using 10.12 and 10.13. We are not able to run compile with the last
release of TBB (2018 update 1) due to a linking issue as I mention in my first email. Therefor we downgrade to TBB 2017 update 8.
I compiled from scratch both version, and I also used packed manager.

I am not able to track the bug it is an internal linking issue, I do not have presently the time to jump into the internal structure of TBB,
moreover the documentation of graph flow does not really exist, which do the debugging difficult.

I will wait update2 to test, if there are any progress. If I have a bit of time I will try to reproduce the example in a tiny program.

Best,

Tim

 

 



 

 

 

0 Kudos
Nikita_P_Intel
Employee
1,008 Views

Hi Tim,

tiny reproducer would be helpful in order to investigate your problem. 

Regarding documentation of Flow Graph. You mean, that the Reference Guide was not helpful? Maybe you could provide a feedback so that we can improve it.

Thanks,

Nikita

0 Kudos
Timocafé
Beginner
1,008 Views

 

Hello,

Update on the thread, adding additional link in our cmake  to TBB we were able to fix the issue. We are supposing during the update 2017 to 2018 intel TBB gets some of his function moving from pure header to classical library.

Best,

Tim

0 Kudos
Alexey-Kukanov
Employee
1,008 Views

Hi Tim,

all undefined symbols mentioned in your initial post exist in the library for a while. 

The issue, as originally described, looks like an environment configuration problem. According to your last post, you did not link some modules with the TBB library before. Maybe you were just lucky that your use of the flow graph in certain modules did not require the TBB binary; but the flow graph API never was purely header-based, as it relies on the tasking API. In TBB 2018, we extended the use of task_arenas in the graph API, but all necessary library entry points for that already existed in TBB 2017. A bottom line is that the use of the Flow Graph API does require linkage with the TBB library to work.

0 Kudos
Reply