211 lines
4.9 KiB
CMake
211 lines
4.9 KiB
CMake
# ---------------------------------------------------------------------------
|
|
# Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
|
|
#
|
|
# Distributed under the Boost Software License, Version 1.0
|
|
# See accompanying file LICENSE_1_0.txt or copy at
|
|
# http://www.boost.org/LICENSE_1_0.txt
|
|
#
|
|
# ---------------------------------------------------------------------------
|
|
|
|
include_directories(../include)
|
|
|
|
set(PERF_BOOST_COMPONENTS system timer chrono program_options)
|
|
|
|
if (${BOOST_COMPUTE_USE_OFFLINE_CACHE})
|
|
set(PERF_BOOST_COMPONENTS ${PERF_BOOST_COMPONENTS} filesystem)
|
|
endif()
|
|
|
|
if(${BOOST_COMPUTE_THREAD_SAFE} AND NOT ${BOOST_COMPUTE_USE_CPP11})
|
|
set(PERF_BOOST_COMPONENTS ${PERF_BOOST_COMPONENTS} thread)
|
|
elseif(${BOOST_COMPUTE_HAVE_BOLT} AND ${BOOST_COMPUTE_USE_CPP11})
|
|
set(PERF_BOOST_COMPONENTS ${PERF_BOOST_COMPONENTS} thread)
|
|
endif()
|
|
|
|
if(${BOOST_COMPUTE_HAVE_BOLT} AND ${BOOST_COMPUTE_USE_CPP11})
|
|
set(PERF_BOOST_COMPONENTS ${PERF_BOOST_COMPONENTS} date_time)
|
|
endif()
|
|
|
|
if(PERF_BOOST_COMPONENTS)
|
|
list(REMOVE_DUPLICATES PERF_BOOST_COMPONENTS)
|
|
endif()
|
|
find_package(Boost 1.54 REQUIRED COMPONENTS ${PERF_BOOST_COMPONENTS})
|
|
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
|
|
|
|
set(BENCHMARKS
|
|
accumulate
|
|
bernoulli_distribution
|
|
binary_find
|
|
cart_to_polar
|
|
comparison_sort
|
|
copy_if
|
|
copy_to_device
|
|
count
|
|
discrete_distribution
|
|
erase_remove
|
|
exclusive_scan
|
|
fill
|
|
find
|
|
find_end
|
|
includes
|
|
inner_product
|
|
is_permutation
|
|
is_sorted
|
|
max_element
|
|
merge
|
|
next_permutation
|
|
nth_element
|
|
partial_sum
|
|
partition
|
|
partition_point
|
|
prev_permutation
|
|
reverse
|
|
reverse_copy
|
|
rotate
|
|
rotate_copy
|
|
host_sort
|
|
random_number_engine
|
|
reduce_by_key
|
|
saxpy
|
|
search
|
|
search_n
|
|
set_difference
|
|
set_intersection
|
|
set_symmetric_difference
|
|
set_union
|
|
sort
|
|
sort_by_key
|
|
sort_float
|
|
stable_partition
|
|
uniform_int_distribution
|
|
unique
|
|
unique_copy
|
|
)
|
|
|
|
foreach(BENCHMARK ${BENCHMARKS})
|
|
set(PERF_TARGET perf_${BENCHMARK})
|
|
add_executable(${PERF_TARGET} perf_${BENCHMARK}.cpp)
|
|
target_link_libraries(${PERF_TARGET} ${OpenCL_LIBRARIES} ${Boost_LIBRARIES})
|
|
endforeach()
|
|
|
|
# stl benchmarks (for comparison)
|
|
set(STL_BENCHMARKS
|
|
stl_accumulate
|
|
stl_count
|
|
stl_find
|
|
stl_find_end
|
|
stl_includes
|
|
stl_inner_product
|
|
stl_max_element
|
|
stl_merge
|
|
stl_next_permutation
|
|
stl_partial_sum
|
|
stl_partition
|
|
stl_prev_permutation
|
|
stl_reverse
|
|
stl_reverse_copy
|
|
stl_rotate
|
|
stl_rotate_copy
|
|
stl_saxpy
|
|
stl_search
|
|
stl_search_n
|
|
stl_set_difference
|
|
stl_set_intersection
|
|
stl_set_symmetric_difference
|
|
stl_set_union
|
|
stl_sort
|
|
stl_stable_partition
|
|
stl_unique
|
|
stl_unique_copy
|
|
)
|
|
|
|
# stl benchmarks which require c++11
|
|
if(${BOOST_COMPUTE_USE_CPP11})
|
|
list(APPEND
|
|
STL_BENCHMARKS
|
|
stl_is_permutation
|
|
stl_partition_point
|
|
)
|
|
endif()
|
|
|
|
foreach(BENCHMARK ${STL_BENCHMARKS})
|
|
set(PERF_TARGET perf_${BENCHMARK})
|
|
add_executable(${PERF_TARGET} perf_${BENCHMARK}.cpp)
|
|
target_link_libraries(${PERF_TARGET} ${Boost_LIBRARIES})
|
|
endforeach()
|
|
|
|
# cuda/thrust benchmarks (for comparison)
|
|
if(${BOOST_COMPUTE_HAVE_CUDA})
|
|
find_package(CUDA 5.0 REQUIRED)
|
|
|
|
set(CUDA_BENCHMARKS
|
|
thrust_accumulate
|
|
thrust_count
|
|
thrust_exclusive_scan
|
|
thrust_find
|
|
thrust_inner_product
|
|
thrust_merge
|
|
thrust_partial_sum
|
|
thrust_partition
|
|
thrust_reduce_by_key
|
|
thrust_reverse
|
|
thrust_reverse_copy
|
|
thrust_rotate
|
|
thrust_saxpy
|
|
thrust_set_difference
|
|
thrust_sort
|
|
thrust_unique
|
|
)
|
|
|
|
foreach(BENCHMARK ${CUDA_BENCHMARKS})
|
|
set(PERF_TARGET perf_${BENCHMARK})
|
|
cuda_add_executable(${PERF_TARGET} perf_${BENCHMARK}.cu)
|
|
target_link_libraries(${PERF_TARGET} ${CUDA_LIBRARIES} ${Boost_LIBRARIES})
|
|
endforeach()
|
|
endif()
|
|
|
|
# intel tbb benchmarks (for comparison)
|
|
if(${BOOST_COMPUTE_HAVE_TBB})
|
|
find_package(TBB REQUIRED)
|
|
include_directories(SYSTEM ${TBB_INCLUDE_DIRS})
|
|
|
|
set(TBB_BENCHMARKS
|
|
tbb_accumulate
|
|
tbb_merge
|
|
tbb_sort
|
|
)
|
|
|
|
foreach(BENCHMARK ${TBB_BENCHMARKS})
|
|
set(PERF_TARGET perf_${BENCHMARK})
|
|
add_executable(${PERF_TARGET} perf_${BENCHMARK}.cpp)
|
|
target_link_libraries(${PERF_TARGET} ${TBB_LIBRARIES} ${Boost_LIBRARIES})
|
|
endforeach()
|
|
endif()
|
|
|
|
# bolt c++ template lib benchmarks (for comparison)
|
|
if(${BOOST_COMPUTE_HAVE_BOLT} AND ${BOOST_COMPUTE_USE_CPP11})
|
|
find_package(Bolt REQUIRED)
|
|
include_directories(SYSTEM ${BOLT_INCLUDE_DIRS})
|
|
|
|
set(BOLT_BENCHMARKS
|
|
bolt_accumulate
|
|
bolt_count
|
|
bolt_exclusive_scan
|
|
bolt_fill
|
|
bolt_inner_product
|
|
bolt_max_element
|
|
bolt_merge
|
|
bolt_partial_sum
|
|
bolt_reduce_by_key
|
|
bolt_saxpy
|
|
bolt_sort
|
|
)
|
|
|
|
foreach(BENCHMARK ${BOLT_BENCHMARKS})
|
|
set(PERF_TARGET perf_${BENCHMARK})
|
|
add_executable(${PERF_TARGET} perf_${BENCHMARK}.cpp)
|
|
target_link_libraries(${PERF_TARGET} ${OpenCL_LIBRARIES} ${BOLT_LIBRARIES} ${Boost_LIBRARIES})
|
|
endforeach()
|
|
elseif(${BOOST_COMPUTE_HAVE_BOLT} AND NOT ${BOOST_COMPUTE_USE_CPP11})
|
|
message(WARNING "BOOST_COMPUTE_USE_CPP11 must be ON for building Bolt C++ Template Library performance tests.")
|
|
endif()
|