1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
include(CheckIncludeFileCXX)
check_include_file_cxx(oneapi/dpl/execution KOKKOS_COMPILER_HAS_ONEDPL_EXECUTION_HEADER)
check_include_file_cxx(oneapi/dpl/algorithm KOKKOS_COMPILER_HAS_ONEDPL_ALGORITHM_HEADER)
include(CheckCXXSourceCompiles)
check_cxx_source_compiles(
"
#include <iostream>
int main()
{
#if defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE == 9 || _GLIBCXX_RELEASE == 10)
static_assert(false);
#endif
return 0;
}"
KOKKOS_NO_TBB_CONFLICT
)
if(KOKKOS_COMPILER_HAS_ONEDPL_EXECUTION_HEADER AND KOKKOS_COMPILER_HAS_ONEDPL_ALGORITHM_HEADER)
if(KOKKOS_NO_TBB_CONFLICT)
kokkos_create_imported_tpl(ONEDPL INTERFACE)
else()
kokkos_create_imported_tpl(
ONEDPL
INTERFACE
# https://stackoverflow.com/questions/67923287/how-to-resolve-no-member-named-task-in-namespace-tbb-error-when-using-oned/
COMPILE_DEFINITIONS
PSTL_USE_PARALLEL_POLICIES=0
_GLIBCXX_USE_TBB_PAR_BACKEND=0
)
endif()
else()
find_package(oneDPL REQUIRED)
if(KOKKOS_NO_TBB_CONFLICT)
kokkos_create_imported_tpl(ONEDPL INTERFACE LINK_LIBRARIES oneDPL)
else()
kokkos_create_imported_tpl(
ONEDPL
INTERFACE
LINK_LIBRARIES
oneDPL
# https://stackoverflow.com/questions/67923287/how-to-resolve-no-member-named-task-in-namespace-tbb-error-when-using-oned/
COMPILE_DEFINITIONS
PSTL_USE_PARALLEL_POLICIES=0
_GLIBCXX_USE_TBB_PAR_BACKEND=0
)
endif()
# Export oneDPL as a Kokkos dependency
kokkos_export_cmake_tpl(oneDPL)
endif()
|