27 lines
1.4 KiB
CMake
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 () |