Skip to content

Commit

Permalink
simplify make catalogue (#2042)
Browse files Browse the repository at this point in the history
- unit tests and some examples build their own mechanism catalogue
- repeated logic for detecting GPUs, passing compile time flags
- leverage the cmake variables and targets which are already there since these catalogues are internal to arbor
- build a static library with mechanisms, which links to arbor-private-deps
  • Loading branch information
boeschf authored Nov 22, 2022
1 parent b63cca1 commit 9797403
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 51 deletions.
16 changes: 4 additions & 12 deletions example/ornstein_uhlenbeck/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,20 +1,12 @@
include(${PROJECT_SOURCE_DIR}/mechanisms/BuildModules.cmake)

make_catalogue(
make_catalogue_lib(
NAME ornstein_uhlenbeck
MOD ornstein_uhlenbeck
VERBOSE ${ARB_CAT_VERBOSE}
ADD_DEPS OFF)
VERBOSE ${ARB_CAT_VERBOSE})

add_executable(ou EXCLUDE_FROM_ALL ou.cpp ${catalogue-ornstein_uhlenbeck-mechanisms})
add_dependencies(ou catalogue-ornstein_uhlenbeck-target)

if(ARB_WITH_CUDA_CLANG OR ARB_WITH_HIP_CLANG)
set_source_files_properties(${catalogue-ornstein_uhlenbeck-meachanisms} PROPERTIES LANGUAGE CXX)
endif()
target_include_directories(ou PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/generated/ornstein_uhlenbeck")

target_link_libraries(ou PRIVATE arbor-private-deps) # compiler flags, GPU options etc
add_executable(ou EXCLUDE_FROM_ALL ou.cpp)
target_link_libraries(ou PRIVATE catalogue-ornstein_uhlenbeck)
target_link_libraries(ou PRIVATE arbor arborio)
if (ARB_USE_BUNDLED_FMT)
target_include_directories(ou PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../ext/fmt/include")
Expand Down
16 changes: 16 additions & 0 deletions mechanisms/BuildModules.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,19 @@ function("make_catalogue_standalone")
target_link_libraries(${MK_CAT_NAME}-catalogue PRIVATE arbor::arbor)
endif()
endfunction()

function("make_catalogue_lib")
cmake_parse_arguments(MK_CAT "" "NAME;VERBOSE" "MOD;CXX" ${ARGN})
set(MK_CAT_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated/${MK_CAT_NAME}")
make_catalogue(
NAME ${MK_CAT_NAME}
MOD ${MK_CAT_MOD}
VERBOSE ${MK_CAT_VERBOSE}
ADD_DEPS OFF)
if(ARB_WITH_CUDA_CLANG OR ARB_WITH_HIP_CLANG)
set_source_files_properties(${catalogue-${MK_CAT_NAME}-mechanisms} PROPERTIES LANGUAGE CXX)
endif()
add_library(catalogue-${MK_CAT_NAME} STATIC EXCLUDE_FROM_ALL ${catalogue-${MK_CAT_NAME}-mechanisms})
target_link_libraries(catalogue-${MK_CAT_NAME} PRIVATE arbor arbor-private-deps)
target_include_directories(catalogue-${MK_CAT_NAME} INTERFACE ${MK_CAT_OUT_DIR})
endfunction()
45 changes: 6 additions & 39 deletions test/unit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,10 @@ set(test_mechanisms

include(${PROJECT_SOURCE_DIR}/mechanisms/BuildModules.cmake)

make_catalogue(
make_catalogue_lib(
NAME testing
MOD ${test_mechanisms}
VERBOSE ${ARB_CAT_VERBOSE}
ADD_DEPS OFF)
VERBOSE ${ARB_CAT_VERBOSE})

# Unit test sources

Expand Down Expand Up @@ -177,14 +176,12 @@ endif()

if(ARB_WITH_CUDA_CLANG OR ARB_WITH_HIP_CLANG)
set_source_files_properties(${unit_sources} PROPERTIES LANGUAGE CXX)
set_source_files_properties(${test_mech_sources} PROPERTIES LANGUAGE CXX)
endif()

add_executable(unit EXCLUDE_FROM_ALL ${unit_sources} ${catalogue-testing-mechanisms})
add_dependencies(unit catalogue-testing-target)
add_executable(unit EXCLUDE_FROM_ALL ${unit_sources})
target_link_libraries(unit PRIVATE catalogue-testing)
add_dependencies(tests unit)


make_catalogue_standalone(
NAME dummy
SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/dummy"
Expand All @@ -193,40 +190,10 @@ make_catalogue_standalone(
CXX_FLAGS_TARGET ${ARB_CXX_FLAGS_TARGET_FULL}
VERBOSE ON)

if(ARB_WITH_NVCC)
target_compile_options(dummy-catalogue PRIVATE -DARB_CUDA)
endif()

if(ARB_WITH_CUDA_CLANG)
set(clang_options_ -DARB_CUDA -xcuda --cuda-gpu-arch=sm_60 --cuda-path=${CUDA_TOOLKIT_ROOT_DIR})
target_compile_options(unit PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${clang_options_}>)
endif()

if(ARB_WITH_HIP_CLANG)
set(clang_options_ -DARB_HIP -xhip --amdgpu-target=gfx906 --amdgpu-target=gfx900)
target_compile_options(unit PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${clang_options_}>)
endif()
target_link_libraries(dummy-catalogue PRIVATE arbor-private-deps)
add_dependencies(unit dummy-catalogue)

if(ARB_WITH_GPU)
target_compile_definitions(unit PRIVATE ARB_GPU_ENABLED)
endif()

if(ARB_WITH_NVCC)
target_compile_options(unit PRIVATE -DARB_CUDA)
endif()

if(ARB_WITH_CUDA_CLANG)
set(clang_options_ -DARB_CUDA -xcuda --cuda-gpu-arch=sm_60 --cuda-path=${CUDA_TOOLKIT_ROOT_DIR})
target_compile_options(unit PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${clang_options_}>)
endif()

if(ARB_WITH_HIP_CLANG)
set(clang_options_ -DARB_HIP -xhip --amdgpu-target=gfx906 --amdgpu-target=gfx900)
target_compile_options(unit PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${clang_options_}>)
endif()

target_compile_options(unit PRIVATE ${ARB_CXX_FLAGS_TARGET_FULL})
target_link_libraries(unit PRIVATE arbor-private-deps)
target_compile_definitions(unit PRIVATE "-DDATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/../swc\"")
target_compile_definitions(unit PRIVATE "-DLIBDIR=\"${PROJECT_BINARY_DIR}/lib\"")
target_include_directories(unit PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
Expand Down

0 comments on commit 9797403

Please sign in to comment.