30 lines
1.4 KiB
CMake
30 lines
1.4 KiB
CMake
|
|
register_flag_optional(ONE_TBB_DIR
|
|
"Absolute path to oneTBB (with header `onetbb/tbb.h`) distribution, the directory should contain at least `include/` and `lib/.
|
|
If unspecified, the system TBB (with header `tbb/tbb.h`) will be used via CMake's find_package(TBB)."
|
|
"")
|
|
|
|
|
|
register_flag_optional(PARTITIONER
|
|
"Partitioner specifies how a loop template should partition its work among threads.
|
|
Possible values are:
|
|
AUTO - Optimize range subdivision based on work-stealing events.
|
|
AFFINITY - Proportional splitting that optimizes for cache affinity.
|
|
STATIC - Distribute work uniformly with no additional load balancing.
|
|
SIMPLE - Recursively split its range until it cannot be further subdivided.
|
|
See https://spec.oneapi.com/versions/latest/elements/oneTBB/source/algorithms.html#partitioners for more details."
|
|
"AUTO")
|
|
|
|
macro(setup)
|
|
if(ONE_TBB_DIR)
|
|
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
|
|
endif()
|
|
|
|
|
|
# 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_definitions(PARTITIONER_${PARTITIONER})
|
|
endmacro()
|