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