| | |
| | |
| | |
| |
|
| | 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() |
| |
|