| | |
| | |
| | |
| |
|
| | function(thrust_configure_multiconfig) |
| | option(THRUST_ENABLE_MULTICONFIG "Enable multiconfig options for coverage testing." OFF) |
| |
|
| | |
| | set(THRUST_CPP_DIALECT_OPTIONS |
| | 11 14 17 20 |
| | 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() |
| |
|
| | |
| | option(THRUST_MULTICONFIG_ENABLE_DIALECT_ALL |
| | "Generate build configurations for all C++ standards supported by the configured compilers." |
| | OFF |
| | ) |
| |
|
| | |
| | option(THRUST_MULTICONFIG_ENABLE_DIALECT_LATEST |
| | "Generate a single build configuration for the most recent C++ standard supported by the configured compilers." |
| | OFF |
| | ) |
| |
|
| | |
| | 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.3) |
| | 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.3) |
| | endif() |
| | endif() |
| | endfunction() |
| |
|