LLNL/RAJA

Compatibility with OneTBB?

barracuda156 opened this issue · 5 comments

Apparently Raja does not build against the current OneTBB:

In file included from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb.hpp:29,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/RAJA.hpp:74,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/reproducers/openmp-target/reproducer-openmptarget-issue1.cpp:12:
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:53:1: error: expected class-name before '{' token
   53 | {
      | ^
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:72:8: error: 'task' in namespace 'tbb' does not name a type
   72 |   tbb::task* execute()
      |        ^~~~
In file included from /opt/local/include/oneapi/tbb/enumerable_thread_specific.h:36,
                 from /opt/local/include/oneapi/tbb/combinable.h:22,
                 from /opt/local/include/oneapi/tbb.h:35,
                 from /opt/local/include/tbb/tbb.h:17,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/forall.hpp:28,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb.hpp:25:
/opt/local/include/oneapi/tbb/task.h:26:11: note: 'tbb::v1::task' declared here
   26 | namespace task {
      |           ^~~~
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp: In function 'void RAJA::impl::sort::detail::tbb_sort(Sorter, Iter, Iter, Compare)':
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:126:25: error: 'allocate_root' is not a member of 'tbb::v1::task'
  126 |         *new(tbb::task::allocate_root()) SortTask(sorter, begin, end, comp);
      |                         ^~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:127:16: error: 'spawn_root_and_wait' is not a member of 'tbb::v1::task'
  127 |     tbb::task::spawn_root_and_wait(sort_task);
      |                ^~~~~~~~~~~~~~~~~~~
In file included from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb.hpp:29,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/RAJA.hpp:74,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/reproducers/openmp-target/reproducer-openmptarget.cpp:12:
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:53:1: error: expected class-name before '{' token
   53 | {
      | ^
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:72:8: error: 'task' in namespace 'tbb' does not name a type
   72 |   tbb::task* execute()
      |        ^~~~
In file included from /opt/local/include/oneapi/tbb/enumerable_thread_specific.h:36,
                 from /opt/local/include/oneapi/tbb/combinable.h:22,
                 from /opt/local/include/oneapi/tbb.h:35,
                 from /opt/local/include/tbb/tbb.h:17,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/forall.hpp:28,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb.hpp:25:
/opt/local/include/oneapi/tbb/task.h:26:11: note: 'tbb::v1::task' declared here
   26 | namespace task {
      |           ^~~~
In file included from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb.hpp:29,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/RAJA.hpp:74,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/reproducers/openmp-target/reproducer-openmptarget-issue2.cpp:12:
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:53:1: error: expected class-name before '{' token
   53 | {
      | ^
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:72:8: error: 'task' in namespace 'tbb' does not name a type
   72 |   tbb::task* execute()
      |        ^~~~
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp: In function 'void RAJA::impl::sort::detail::tbb_sort(Sorter, Iter, Iter, Compare)':
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:126:25: error: 'allocate_root' is not a member of 'tbb::v1::task'
  126 |         *new(tbb::task::allocate_root()) SortTask(sorter, begin, end, comp);
      |                         ^~~~~~~~~~~~~
In file included from /opt/local/include/oneapi/tbb/enumerable_thread_specific.h:36,
                 from /opt/local/include/oneapi/tbb/combinable.h:22,
                 from /opt/local/include/oneapi/tbb.h:35,
                 from /opt/local/include/tbb/tbb.h:17,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/forall.hpp:28,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb.hpp:25:
/opt/local/include/oneapi/tbb/task.h:26:11: note: 'tbb::v1::task' declared here
   26 | namespace task {
      |           ^~~~
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:127:16: error: 'spawn_root_and_wait' is not a member of 'tbb::v1::task'
  127 |     tbb::task::spawn_root_and_wait(sort_task);
      |                ^~~~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp: In function 'void RAJA::impl::sort::detail::tbb_sort(Sorter, Iter, Iter, Compare)':
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:126:25: error: 'allocate_root' is not a member of 'tbb::v1::task'
  126 |         *new(tbb::task::allocate_root()) SortTask(sorter, begin, end, comp);
      |                         ^~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_raja/raja/work/RAJA-2022.10.5/include/RAJA/policy/tbb/sort.hpp:127:16: error: 'spawn_root_and_wait' is not a member of 'tbb::v1::task'
  127 |     tbb::task::spawn_root_and_wait(sort_task);
      |                ^~~~~~~~~~~~~~~~~~~
make[2]: *** [reproducers/openmp-target/CMakeFiles/reproducer-openmptarget.exe.dir/reproducer-openmptarget.cpp.o] Error 1

Consider deprecating and then removing TBB. Breaking changes were made for TBB in OneAPI compiler.

Consider deprecating and then removing TBB. Breaking changes were made for TBB in OneAPI compiler.

@rhornung67 You mean between tbb and OneTBB or something recent?

I think the differences are summarized here: https://oneapi-src.github.io/oneTBB/main/tbb_userguide/Migration_Guide.html

RAJA tbb support is not feature complete and was developed along-side the OpenMP support to help ensure that we weren't making limited assumptions about multi-threading support based on OpenMP's pragma-based model. tbb support in RAJA was never considered production ready and no one is using it. We will likely remove it instead of maintaining something that has issues and which we don't have resources to work on.

@rhornung67 Got it, thank you for a detailed explanation.

TBB removed in #1554