BabelStream/cmake/shim_onedpl.cmake
2022-07-28 15:03:26 +01:00

27 lines
1.4 KiB
CMake

if (USE_ONEDPL)
# # XXX see https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-library-guide/top/oneapi-dpc-library-onedpl-overview.html
# # this is to avoid the system TBB headers (if exists) from having precedence which isn't compatible with oneDPL's par implementation
# register_definitions(
# PSTL_USE_PARALLEL_POLICIES=0
# _GLIBCXX_USE_TBB_PAR_BACKEND=0
# )
register_definitions(USE_ONEDPL)
if (USE_ONEDPL STREQUAL "TBB")
register_definitions(ONEDPL_USE_TBB_BACKEND=1)
# TBB will either be linked later (USE_TBB==ON) or via extra libraries, don't do anything here
elseif (USE_ONEDPL STREQUAL "OPENMP")
register_definitions(ONEDPL_USE_OPENMP_BACKEND=1)
# Link OpenMP via CMAKE
find_package(OpenMP REQUIRED)
register_link_library(OpenMP::OpenMP_CXX)
elseif (USE_ONEDPL STREQUAL "SYCL")
register_definitions(ONEDPL_USE_DPCPP_BACKEND=1)
# This needs a SYCL compiler, will fail if CXX doesn't SYCL2020
register_append_cxx_flags(ANY -fsycl-unnamed-lambda -fsycl)
else ()
message(FATAL_ERROR "Unsupported USE_ONEDPL backend: ${USE_ONEDPL}, see USE_ONEDPL flag description for available values.")
endif ()
register_directories(ANY ${onedpl_SOURCE_DIR}/include)
endif ()