camenduru's picture
thanks to nvidia ❤
8ae5fc5
cmake_minimum_required(VERSION 3.18)
project(libcudacxx-benchmarks LANGUAGES CXX CUDA)
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
set(GPU_ARCHS "70;72;75;80" CACHE STRING "List of GPU architectures to compile for.")
message(STATUS "Enabled CUDA architectures:${GPU_ARCHS}")
find_package(Threads REQUIRED)
find_package(OpenMP)
function(ConfigureHostBench BENCH_NAME BENCH_SRC)
add_executable("${BENCH_NAME}" "${BENCH_SRC}")
target_link_libraries("${BENCH_NAME}" PRIVATE Threads::Threads)
# TODO: Link against libcudaxx interface target instead
target_include_directories("${BENCH_NAME}" PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/../include")
if(OpenMP_CXX_FOUND)
target_link_libraries("${BENCH_NAME}" PRIVATE OpenMP::OpenMP_CXX)
endif()
endfunction(ConfigureHostBench)
function(ConfigureDeviceBench BENCH_NAME BENCH_SRC)
add_executable("${BENCH_NAME}" "${BENCH_SRC}")
set_property(TARGET "${BENCH_NAME}" PROPERTY CUDA_ARCHITECTURES "${GPU_ARCHS}")
# TODO: Link against libcudaxx interface target instead
target_include_directories("${BENCH_NAME}" PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/../include")
target_compile_options("${BENCH_NAME}" PRIVATE --expt-extended-lambda --expt-relaxed-constexpr)
endfunction(ConfigureDeviceBench)
ConfigureHostBench(concurrency_host concurrency.cpp)
ConfigureDeviceBench(concurrency_device concurrency.cu)