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