Fixup oneDPL inclusion
This commit is contained in:
parent
14844ceb56
commit
5a496a91b2
@ -102,10 +102,24 @@ if (USE_ONEDPL)
|
|||||||
GIT_REPOSITORY https://github.com/oneapi-src/oneDPL.git
|
GIT_REPOSITORY https://github.com/oneapi-src/oneDPL.git
|
||||||
GIT_TAG oneDPL-2021.7.0-release
|
GIT_TAG oneDPL-2021.7.0-release
|
||||||
)
|
)
|
||||||
|
string(TOLOWER ${USE_ONEDPL} ONEDPL_BACKEND)
|
||||||
|
# XXX oneDPL looks for omp instead of openmp, which mismatches(!) with ONEDPL_PAR_BACKEND if using find_package
|
||||||
|
if (ONEDPL_BACKEND STREQUAL "openmp")
|
||||||
|
set(ONEDPL_BACKEND omp)
|
||||||
|
endif ()
|
||||||
# Not using FetchContent_MakeAvailable (CMake>= 3.14) because we need EXCLUDE_FROM_ALL
|
# Not using FetchContent_MakeAvailable (CMake>= 3.14) because we need EXCLUDE_FROM_ALL
|
||||||
FetchContent_GetProperties(oneDPL)
|
FetchContent_GetProperties(oneDPL)
|
||||||
if (NOT oneDPL_POPULATED)
|
if (NOT oneDPL_POPULATED)
|
||||||
FetchContent_Populate(oneDPL)
|
FetchContent_Populate(oneDPL)
|
||||||
|
if (USE_TBB)
|
||||||
|
macro(find_package NAME)
|
||||||
|
if ("${NAME}" STREQUAL "TBB")
|
||||||
|
message(STATUS "Discarding oneDPL's call to find_package(${NAME} ${ARGN})")
|
||||||
|
else ()
|
||||||
|
_find_package(${NAME} ${ARGN})
|
||||||
|
endif ()
|
||||||
|
endmacro()
|
||||||
|
endif ()
|
||||||
add_subdirectory(${onedpl_SOURCE_DIR} ${onedpl_BINARY_DIR} EXCLUDE_FROM_ALL)
|
add_subdirectory(${onedpl_SOURCE_DIR} ${onedpl_BINARY_DIR} EXCLUDE_FROM_ALL)
|
||||||
endif ()
|
endif ()
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -71,10 +71,6 @@ macro(register_definitions)
|
|||||||
list(APPEND IMPL_DEFINITIONS ${ARGN})
|
list(APPEND IMPL_DEFINITIONS ${ARGN})
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(register_directories)
|
|
||||||
list(APPEND IMPL_DIRECTORIES ${ARGN})
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(register_flag_required NAME DESCRIPTION)
|
macro(register_flag_required NAME DESCRIPTION)
|
||||||
list(APPEND CUSTOM_FLAGS_TRIPLE "${NAME}" "${DESCRIPTION}" ON "")
|
list(APPEND CUSTOM_FLAGS_TRIPLE "${NAME}" "${DESCRIPTION}" ON "")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
@ -1,27 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
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 ()
|
|
||||||
@ -15,7 +15,7 @@
|
|||||||
#include <oneapi/dpl/algorithm>
|
#include <oneapi/dpl/algorithm>
|
||||||
#include <oneapi/dpl/numeric>
|
#include <oneapi/dpl/numeric>
|
||||||
|
|
||||||
#ifdef ONEDPL_USE_DPCPP_BACKEND
|
#if ONEDPL_USE_DPCPP_BACKEND
|
||||||
|
|
||||||
#include <CL/sycl.hpp>
|
#include <CL/sycl.hpp>
|
||||||
|
|
||||||
|
|||||||
@ -24,13 +24,13 @@ STDDataStream<T>::STDDataStream(const int ARRAY_SIZE, int device)
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
std::cout << "Backing storage typeid: " << typeid(a).name() << std::endl;
|
std::cout << "Backing storage typeid: " << typeid(a).name() << std::endl;
|
||||||
#if USE_ONEDPL
|
#ifdef USE_ONEDPL
|
||||||
std::cout << "Using oneDPL backend: ";
|
std::cout << "Using oneDPL backend: ";
|
||||||
#if defined(ONEDPL_USE_DPCPP_BACKEND)
|
#if ONEDPL_USE_DPCPP_BACKEND
|
||||||
std::cout << "SYCL USM (device=" << exe_policy.queue().get_device().get_info<sycl::info::device::name>() << ")";
|
std::cout << "SYCL USM (device=" << exe_policy.queue().get_device().get_info<sycl::info::device::name>() << ")";
|
||||||
#elif defined(ONEDPL_USE_TBB_BACKEND)
|
#elif ONEDPL_USE_TBB_BACKEND
|
||||||
std::cout << "TBB " TBB_VERSION_STRING;
|
std::cout << "TBB " TBB_VERSION_STRING;
|
||||||
#elif defined(ONEDPL_USE_OPENMP_BACKEND)
|
#elif ONEDPL_USE_OPENMP_BACKEND
|
||||||
std::cout << "OpenMP";
|
std::cout << "OpenMP";
|
||||||
#else
|
#else
|
||||||
std::cout << "Default";
|
std::cout << "Default";
|
||||||
|
|||||||
@ -41,9 +41,6 @@ register_flag_optional(USE_ONEDPL
|
|||||||
|
|
||||||
macro(setup)
|
macro(setup)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
|
||||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/shim_onedpl.cmake)
|
|
||||||
|
|
||||||
if (NVHPC_OFFLOAD)
|
if (NVHPC_OFFLOAD)
|
||||||
set(NVHPC_FLAGS -stdpar -gpu=${NVHPC_OFFLOAD})
|
set(NVHPC_FLAGS -stdpar -gpu=${NVHPC_OFFLOAD})
|
||||||
# propagate flags to linker so that it links with the gpu stuff as well
|
# propagate flags to linker so that it links with the gpu stuff as well
|
||||||
@ -56,4 +53,8 @@ macro(setup)
|
|||||||
if (USE_TBB)
|
if (USE_TBB)
|
||||||
register_link_library(TBB::tbb)
|
register_link_library(TBB::tbb)
|
||||||
endif ()
|
endif ()
|
||||||
|
if (USE_ONEDPL)
|
||||||
|
register_definitions(USE_ONEDPL)
|
||||||
|
register_link_library(oneDPL)
|
||||||
|
endif ()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
@ -32,13 +32,13 @@ noexcept : array_size{ARRAY_SIZE}, range(0, array_size),
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
std::cout << "Backing storage typeid: " << typeid(a).name() << std::endl;
|
std::cout << "Backing storage typeid: " << typeid(a).name() << std::endl;
|
||||||
#if USE_ONEDPL
|
#ifdef USE_ONEDPL
|
||||||
std::cout << "Using oneDPL backend: ";
|
std::cout << "Using oneDPL backend: ";
|
||||||
#if defined(ONEDPL_USE_DPCPP_BACKEND)
|
#if ONEDPL_USE_DPCPP_BACKEND
|
||||||
std::cout << "SYCL USM (device=" << exe_policy.queue().get_device().get_info<sycl::info::device::name>() << ")";
|
std::cout << "SYCL USM (device=" << exe_policy.queue().get_device().get_info<sycl::info::device::name>() << ")";
|
||||||
#elif defined(ONEDPL_USE_TBB_BACKEND)
|
#elif ONEDPL_USE_TBB_BACKEND
|
||||||
std::cout << "TBB " TBB_VERSION_STRING;
|
std::cout << "TBB " TBB_VERSION_STRING;
|
||||||
#elif defined(ONEDPL_USE_OPENMP_BACKEND)
|
#elif ONEDPL_USE_OPENMP_BACKEND
|
||||||
std::cout << "OpenMP";
|
std::cout << "OpenMP";
|
||||||
#else
|
#else
|
||||||
std::cout << "Default";
|
std::cout << "Default";
|
||||||
|
|||||||
@ -41,7 +41,6 @@ register_flag_optional(USE_ONEDPL
|
|||||||
|
|
||||||
macro(setup)
|
macro(setup)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/shim_onedpl.cmake)
|
|
||||||
if (NVHPC_OFFLOAD)
|
if (NVHPC_OFFLOAD)
|
||||||
set(NVHPC_FLAGS -stdpar -gpu=${NVHPC_OFFLOAD})
|
set(NVHPC_FLAGS -stdpar -gpu=${NVHPC_OFFLOAD})
|
||||||
# propagate flags to linker so that it links with the gpu stuff as well
|
# propagate flags to linker so that it links with the gpu stuff as well
|
||||||
@ -54,4 +53,8 @@ macro(setup)
|
|||||||
if (USE_TBB)
|
if (USE_TBB)
|
||||||
register_link_library(TBB::tbb)
|
register_link_library(TBB::tbb)
|
||||||
endif ()
|
endif ()
|
||||||
|
if (USE_ONEDPL)
|
||||||
|
register_definitions(USE_ONEDPL)
|
||||||
|
register_link_library(oneDPL)
|
||||||
|
endif ()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
@ -32,13 +32,13 @@ noexcept : array_size{ARRAY_SIZE},
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
std::cout << "Backing storage typeid: " << typeid(a).name() << std::endl;
|
std::cout << "Backing storage typeid: " << typeid(a).name() << std::endl;
|
||||||
#if USE_ONEDPL
|
#ifdef USE_ONEDPL
|
||||||
std::cout << "Using oneDPL backend: ";
|
std::cout << "Using oneDPL backend: ";
|
||||||
#if defined(ONEDPL_USE_DPCPP_BACKEND)
|
#if ONEDPL_USE_DPCPP_BACKEND
|
||||||
std::cout << "SYCL USM (device=" << exe_policy.queue().get_device().get_info<sycl::info::device::name>() << ")";
|
std::cout << "SYCL USM (device=" << exe_policy.queue().get_device().get_info<sycl::info::device::name>() << ")";
|
||||||
#elif defined(ONEDPL_USE_TBB_BACKEND)
|
#elif ONEDPL_USE_TBB_BACKEND
|
||||||
std::cout << "TBB " TBB_VERSION_STRING;
|
std::cout << "TBB " TBB_VERSION_STRING;
|
||||||
#elif defined(ONEDPL_USE_OPENMP_BACKEND)
|
#elif ONEDPL_USE_OPENMP_BACKEND
|
||||||
std::cout << "OpenMP";
|
std::cout << "OpenMP";
|
||||||
#else
|
#else
|
||||||
std::cout << "Default";
|
std::cout << "Default";
|
||||||
|
|||||||
@ -33,11 +33,14 @@ macro(setup)
|
|||||||
unset(CMAKE_CXX_STANDARD) # drop any existing standard we have set by default
|
unset(CMAKE_CXX_STANDARD) # drop any existing standard we have set by default
|
||||||
# and append our own:
|
# and append our own:
|
||||||
register_append_cxx_flags(ANY -std=c++2a)
|
register_append_cxx_flags(ANY -std=c++2a)
|
||||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/shim_onedpl.cmake)
|
|
||||||
if (USE_VECTOR)
|
if (USE_VECTOR)
|
||||||
register_definitions(USE_VECTOR)
|
register_definitions(USE_VECTOR)
|
||||||
endif ()
|
endif ()
|
||||||
if (USE_TBB)
|
if (USE_TBB)
|
||||||
register_link_library(TBB::tbb)
|
register_link_library(TBB::tbb)
|
||||||
endif ()
|
endif ()
|
||||||
|
if (USE_ONEDPL)
|
||||||
|
register_definitions(USE_ONEDPL)
|
||||||
|
register_link_library(oneDPL)
|
||||||
|
endif ()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user