1bfcce19dd
Consumers of VTK-m when enabling of dropping of unused functions will see VTK-m functions dropped. Previously this didn't happen as VTK-m didn't build object files with the correct flags for this. By allowing the linker to remove unused symbols we see a significant saving the file size of VTK-m tests, examples, and benchmarks. An OpenMP build of the tests and benchmarks goes from 168MB to 141MB which is roughly a 16% filesize reduction. Initially I had presumed that these changes would increase link times. But in measurements the total wall time for compilation of VTK-m has stayed about the same ( seeing a decrease of 1.5% ). Presumably the increased computation is offset by the reduction in file writing.
51 lines
1.6 KiB
CMake
51 lines
1.6 KiB
CMake
##============================================================================
|
|
## Copyright (c) Kitware, Inc.
|
|
## All rights reserved.
|
|
## See LICENSE.txt for details.
|
|
##
|
|
## This software is distributed WITHOUT ANY WARRANTY; without even
|
|
## the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
## PURPOSE. See the above copyright notice for more information.
|
|
##============================================================================
|
|
function(add_benchmark)
|
|
set(options)
|
|
set(oneValueArgs NAME FILE)
|
|
set(multiValueArgs LIBS)
|
|
cmake_parse_arguments(VTKm_AB
|
|
"${options}" "${oneValueArgs}" "${multiValueArgs}"
|
|
${ARGN}
|
|
)
|
|
set(exe_name ${VTKm_AB_NAME})
|
|
|
|
add_executable(${exe_name} ${VTKm_AB_FILE})
|
|
target_link_libraries(${exe_name} PRIVATE ${VTKm_AB_LIBS})
|
|
vtkm_add_drop_unused_function_flags(${exe_name})
|
|
vtkm_add_target_information(${exe_name})
|
|
|
|
set_target_properties(${exe_name} PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY ${VTKm_EXECUTABLE_OUTPUT_PATH}
|
|
CXX_VISIBILITY_PRESET "hidden"
|
|
CUDA_VISIBILITY_PRESET "hidden"
|
|
)
|
|
|
|
vtkm_add_target_information(${exe_name} DEVICE_SOURCES ${VTKm_AB_FILE})
|
|
endfunction()
|
|
|
|
set(benchmarks
|
|
BenchmarkArrayTransfer
|
|
BenchmarkAtomicArray
|
|
BenchmarkCopySpeeds
|
|
BenchmarkDeviceAdapter
|
|
BenchmarkFieldAlgorithms
|
|
BenchmarkFilters
|
|
BenchmarkTopologyAlgorithms
|
|
)
|
|
|
|
foreach (benchmark ${benchmarks})
|
|
add_benchmark(NAME ${benchmark} FILE ${benchmark}.cxx LIBS vtkm_filter)
|
|
endforeach ()
|
|
|
|
if(TARGET vtkm_rendering)
|
|
add_benchmark(NAME BenchmarkRayTracing FILE BenchmarkRayTracing.cxx LIBS vtkm_rendering)
|
|
endif()
|