| |
| |
| |
|
|
| function(thrust_configure_multiconfig) |
| option(THRUST_ENABLE_MULTICONFIG "Enable multiconfig options for coverage testing." OFF) |
|
|
| |
| set(THRUST_CPP_DIALECT_OPTIONS |
| 11 14 17 |
| CACHE INTERNAL "C++ dialects supported by Thrust." FORCE |
| ) |
|
|
| if (THRUST_ENABLE_MULTICONFIG) |
| |
| foreach (dialect IN LISTS THRUST_CPP_DIALECT_OPTIONS) |
| set(default_value OFF) |
| if (dialect EQUAL 14) |
| set(default_value ON) |
| endif() |
| option(THRUST_MULTICONFIG_ENABLE_DIALECT_CPP${dialect} |
| "Generate C++${dialect} build configurations." |
| ${default_value} |
| ) |
| endforeach() |
|
|
| |
| |
| if ("MSVC" STREQUAL "${CMAKE_CXX_COMPILER_ID}" AND |
| THRUST_MULTICONFIG_ENABLE_DIALECT_CPP11) |
| message(WARNING |
| "Supported versions of MSVC (2017+) do not distinguish between C++11 " |
| "and C++14. The requested C++11 targets will be built with C++14." |
| ) |
| endif() |
|
|
| |
| option(THRUST_MULTICONFIG_ENABLE_SYSTEM_CPP "Generate build configurations that use CPP." ON) |
| option(THRUST_MULTICONFIG_ENABLE_SYSTEM_CUDA "Generate build configurations that use CUDA." ON) |
| option(THRUST_MULTICONFIG_ENABLE_SYSTEM_OMP "Generate build configurations that use OpenMP." OFF) |
| option(THRUST_MULTICONFIG_ENABLE_SYSTEM_TBB "Generate build configurations that use TBB." OFF) |
|
|
| |
| if (THRUST_MULTICONFIG_ENABLE_DIALECT_CPP17 AND |
| THRUST_MULTICONFIG_ENABLE_SYSTEM_CUDA) |
| cmake_minimum_required(VERSION 3.18) |
| endif() |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| set(THRUST_MULTICONFIG_WORKLOAD SMALL CACHE STRING |
| "Limit host/device configs: SMALL (up to 3 h/d combos per dialect), MEDIUM(6), LARGE(8), FULL(12)" |
| ) |
| set_property(CACHE THRUST_MULTICONFIG_WORKLOAD PROPERTY STRINGS |
| SMALL MEDIUM LARGE FULL |
| ) |
| set(THRUST_MULTICONFIG_WORKLOAD_SMALL_CONFIGS |
| CPP_OMP CPP_TBB CPP_CUDA |
| CACHE INTERNAL "Host/device combos enabled for SMALL workloads." FORCE |
| ) |
| set(THRUST_MULTICONFIG_WORKLOAD_MEDIUM_CONFIGS |
| ${THRUST_MULTICONFIG_WORKLOAD_SMALL_CONFIGS} |
| CPP_CPP TBB_TBB OMP_OMP |
| CACHE INTERNAL "Host/device combos enabled for MEDIUM workloads." FORCE |
| ) |
| set(THRUST_MULTICONFIG_WORKLOAD_LARGE_CONFIGS |
| ${THRUST_MULTICONFIG_WORKLOAD_MEDIUM_CONFIGS} |
| OMP_CUDA TBB_CUDA |
| CACHE INTERNAL "Host/device combos enabled for LARGE workloads." FORCE |
| ) |
| set(THRUST_MULTICONFIG_WORKLOAD_FULL_CONFIGS |
| ${THRUST_MULTICONFIG_WORKLOAD_LARGE_CONFIGS} |
| OMP_CPP TBB_CPP OMP_TBB TBB_OMP |
| CACHE INTERNAL "Host/device combos enabled for FULL workloads." FORCE |
| ) |
|
|
| |
| if (DEFINED THRUST_HOST_SYSTEM) |
| set_property(CACHE THRUST_HOST_SYSTEM PROPERTY TYPE INTERNAL) |
| set_property(CACHE THRUST_DEVICE_SYSTEM PROPERTY TYPE INTERNAL) |
| endif() |
| if (DEFINED THRUST_CPP_DIALECT) |
| set_property(CACHE THRUST_CPP_DIALECT PROPERTY TYPE INTERNAL) |
| endif() |
|
|
| else() |
| |
| |
| if (DEFINED THRUST_HOST_SYSTEM) |
| set_property(CACHE THRUST_HOST_SYSTEM PROPERTY TYPE STRING) |
| set_property(CACHE THRUST_DEVICE_SYSTEM PROPERTY TYPE STRING) |
| endif() |
|
|
| set(THRUST_CPP_DIALECT 14 |
| CACHE STRING "The C++ standard to target: ${THRUST_CPP_DIALECT_OPTIONS}" |
| ) |
| set_property(CACHE THRUST_CPP_DIALECT |
| PROPERTY STRINGS |
| ${THRUST_CPP_DIALECT_OPTIONS} |
| ) |
|
|
| |
| if (THRUST_CPP_DIALECT EQUAL 17 AND |
| THRUST_DEVICE_SYSTEM STREQUAL "CUDA") |
| cmake_minimum_required(VERSION 3.18) |
| endif() |
| endif() |
| endfunction() |
|
|