Add in-tree oneTBB build
This commit is contained in:
parent
193eaa7fe2
commit
f5513cd69e
@ -71,6 +71,25 @@ hint_flag(CXX_EXTRA_LINKER_FLAGS "
|
|||||||
# Honor user's CXX_EXTRA_LINK_FLAGS
|
# Honor user's CXX_EXTRA_LINK_FLAGS
|
||||||
set(CXX_EXTRA_LINK_FLAGS ${CXX_EXTRA_FLAGS} ${CXX_EXTRA_LINK_FLAGS})
|
set(CXX_EXTRA_LINK_FLAGS ${CXX_EXTRA_FLAGS} ${CXX_EXTRA_LINK_FLAGS})
|
||||||
|
|
||||||
|
option(USE_TBB "Enable oneTBB library for *supported* models. Enabling this on models that
|
||||||
|
don't explicitly link against TBB is a no-op, see description of your selected
|
||||||
|
model on how this is used." OFF)
|
||||||
|
|
||||||
|
if (USE_TBB)
|
||||||
|
include(FetchContent)
|
||||||
|
FetchContent_Declare(
|
||||||
|
TBB
|
||||||
|
GIT_REPOSITORY https://github.com/oneapi-src/oneTBB.git
|
||||||
|
GIT_TAG faaf43c4ab22cb4b4267d65d5e218fa58800eea8
|
||||||
|
)
|
||||||
|
# Not using FetchContent_MakeAvailable because we need EXCLUDE_FROM_ALL
|
||||||
|
FetchContent_GetProperties(TBB)
|
||||||
|
if (NOT TBB_POPULATED)
|
||||||
|
FetchContent_Populate(TBB)
|
||||||
|
add_subdirectory(${tbb_SOURCE_DIR} ${tbb_BINARY_DIR} EXCLUDE_FROM_ALL)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
# include our macros
|
# include our macros
|
||||||
include(cmake/register_models.cmake)
|
include(cmake/register_models.cmake)
|
||||||
|
|
||||||
|
|||||||
@ -23,6 +23,10 @@ register_flag_optional(NVHPC_OFFLOAD
|
|||||||
ccall - Compile for all supported compute capabilities"
|
ccall - Compile for all supported compute capabilities"
|
||||||
"")
|
"")
|
||||||
|
|
||||||
|
register_flag_optional(USE_TBB
|
||||||
|
"No-op if ONE_TBB_DIR is set. Link against an in-tree oneTBB via FetchContent_Declare, see top level CMakeLists.txt for details."
|
||||||
|
"OFF")
|
||||||
|
|
||||||
macro(setup)
|
macro(setup)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
|
||||||
@ -35,5 +39,7 @@ macro(setup)
|
|||||||
if(USE_VECTOR)
|
if(USE_VECTOR)
|
||||||
register_definitions(USE_VECTOR)
|
register_definitions(USE_VECTOR)
|
||||||
endif()
|
endif()
|
||||||
|
if (USE_TBB)
|
||||||
|
register_link_library(TBB::tbb)
|
||||||
|
endif ()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
@ -23,6 +23,11 @@ register_flag_optional(NVHPC_OFFLOAD
|
|||||||
ccall - Compile for all supported compute capabilities"
|
ccall - Compile for all supported compute capabilities"
|
||||||
"")
|
"")
|
||||||
|
|
||||||
|
register_flag_optional(USE_TBB
|
||||||
|
"Link against an in-tree oneTBB via FetchContent_Declare, see top level CMakeLists.txt for details."
|
||||||
|
"OFF")
|
||||||
|
|
||||||
|
|
||||||
macro(setup)
|
macro(setup)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
|
||||||
@ -35,5 +40,7 @@ macro(setup)
|
|||||||
if(USE_VECTOR)
|
if(USE_VECTOR)
|
||||||
register_definitions(USE_VECTOR)
|
register_definitions(USE_VECTOR)
|
||||||
endif()
|
endif()
|
||||||
|
if (USE_TBB)
|
||||||
|
register_link_library(TBB::tbb)
|
||||||
|
endif ()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
@ -7,6 +7,10 @@ register_flag_optional(USE_VECTOR
|
|||||||
"Whether to use std::vector<T> for storage or use aligned_alloc. C++ vectors are *zero* initialised where as aligned_alloc is uninitialised before first use."
|
"Whether to use std::vector<T> for storage or use aligned_alloc. C++ vectors are *zero* initialised where as aligned_alloc is uninitialised before first use."
|
||||||
"OFF")
|
"OFF")
|
||||||
|
|
||||||
|
register_flag_optional(USE_TBB
|
||||||
|
"No-op if ONE_TBB_DIR is set. Link against an in-tree oneTBB via FetchContent_Declare, see top level CMakeLists.txt for details."
|
||||||
|
"OFF")
|
||||||
|
|
||||||
macro(setup)
|
macro(setup)
|
||||||
|
|
||||||
# TODO this needs to eventually be removed when CMake adds proper C++20 support or at least update the flag used here
|
# TODO this needs to eventually be removed when CMake adds proper C++20 support or at least update the flag used here
|
||||||
@ -20,4 +24,7 @@ macro(setup)
|
|||||||
if(USE_VECTOR)
|
if(USE_VECTOR)
|
||||||
register_definitions(USE_VECTOR)
|
register_definitions(USE_VECTOR)
|
||||||
endif()
|
endif()
|
||||||
|
if (USE_TBB)
|
||||||
|
register_link_library(TBB::tbb)
|
||||||
|
endif ()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
@ -19,15 +19,20 @@ register_flag_optional(USE_VECTOR
|
|||||||
"Whether to use std::vector<T> for storage or use aligned_alloc. C++ vectors are *zero* initialised where as aligned_alloc is uninitialised before first use."
|
"Whether to use std::vector<T> for storage or use aligned_alloc. C++ vectors are *zero* initialised where as aligned_alloc is uninitialised before first use."
|
||||||
"OFF")
|
"OFF")
|
||||||
|
|
||||||
|
register_flag_optional(USE_TBB
|
||||||
|
"No-op if ONE_TBB_DIR is set. Link against an in-tree oneTBB via FetchContent_Declare, see top level CMakeLists.txt for details."
|
||||||
|
"OFF")
|
||||||
|
|
||||||
macro(setup)
|
macro(setup)
|
||||||
if(ONE_TBB_DIR)
|
if(ONE_TBB_DIR)
|
||||||
set(TBB_ROOT "${ONE_TBB_DIR}") # see https://github.com/Kitware/VTK/blob/0a31a9a3c1531ae238ac96a372fec4be42282863/CMake/FindTBB.cmake#L34
|
set(TBB_ROOT "${ONE_TBB_DIR}") # see https://github.com/Kitware/VTK/blob/0a31a9a3c1531ae238ac96a372fec4be42282863/CMake/FindTBB.cmake#L34
|
||||||
# docs on Intel's website refers to TBB_DIR which is not correct
|
# docs on Intel's website refers to TBB_DIR which is not correct
|
||||||
|
find_package(TBB REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# No need to handle USE_TBB as both ONE_TBB_DIR and USE_TBB will create the TBB::tbb target
|
||||||
|
|
||||||
# see https://github.com/oneapi-src/oneTBB/blob/master/cmake/README.md#tbbconfig---integration-of-binary-packages
|
# see https://github.com/oneapi-src/oneTBB/blob/master/cmake/README.md#tbbconfig---integration-of-binary-packages
|
||||||
find_package(TBB REQUIRED)
|
|
||||||
register_link_library(TBB::tbb)
|
register_link_library(TBB::tbb)
|
||||||
register_definitions(PARTITIONER_${PARTITIONER})
|
register_definitions(PARTITIONER_${PARTITIONER})
|
||||||
if(USE_VECTOR)
|
if(USE_VECTOR)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user