From 414f52850decf7729ce8a6522712157a7452beef Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Sat, 21 Sep 2024 18:41:40 -0700 Subject: [PATCH] Enable tests --- CMakeLists.txt | 35 ++++++++++---------- Tests/CMakeLists.txt | 7 ++++ Tests/GPU/CMakeLists.txt | 19 +++++++++++ Tests/Parser/CMakeLists.txt | 11 +++++++ Tests/Parser2/CMakeLists.txt | 18 ++++++++++ Tools/CMake/amrexprConfig.cmake.in | 8 ----- Tutorials/libamrexpr/CMakeLists.txt | 51 +++++++++++++++++++++++++++++ 7 files changed, 124 insertions(+), 25 deletions(-) create mode 100644 Tests/CMakeLists.txt create mode 100644 Tests/GPU/CMakeLists.txt create mode 100644 Tests/Parser/CMakeLists.txt create mode 100644 Tests/Parser2/CMakeLists.txt create mode 100644 Tutorials/libamrexpr/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index aaf05e8..7ca0f0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,6 @@ if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR) message(FATAL_ERROR "\nIn-source builds are not allowed.\n") endif() -set(CMAKE_CXX_STANDARD 17) - if (NOT CMAKE_BUILD_TYPE) set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo") set(CMAKE_BUILD_TYPE Release @@ -22,7 +20,6 @@ if (ENABLE_CUDA) set(AMREXPR_USE_CUDA 1) find_package(CUDAToolkit REQUIRED) enable_language(CUDA) - set(CMAKE_CUDA_STANDARD 17) endif() option(ENABLE_HIP "Enable HIP support" OFF) @@ -31,7 +28,6 @@ if (ENABLE_HIP) set(AMREXPR_USE_HIP 1) find_package(hip REQUIRED) enable_language(HIP) - set(CMAKE_HIP_STANDARD 17) endif() option(ENABLE_SYCL "Enable SYCL support" OFF) @@ -44,6 +40,8 @@ endif() add_library(amrexpr) add_subdirectory(Src) +target_compile_features(amrexpr PUBLIC cxx_std_17) + configure_file(${PROJECT_SOURCE_DIR}/Tools/CMake/amrexpr_Config.H.in ${CMAKE_BINARY_DIR}/amrexpr_Config.H) @@ -61,16 +59,21 @@ if (ENABLE_CUDA) set_target_properties(amrexpr PROPERTIES CUDA_ARCHITECTURES native) endif() set_target_properties(amrexpr PROPERTIES CUDA_SEPARABLE_COMPILATION ON) - target_compile_options(amrexpr PRIVATE + target_compile_features(amrexpr PUBLIC cuda_std_17) + target_compile_options(amrexpr PUBLIC $<$:-m64> $<$:--expt-relaxed-constexpr> $<$:--expt-extended-lambda> $<$:--use_fast_math>) - target_link_libraries(amrexpr PRIVATE CUDA::cudart) + target_link_libraries(amrexpr PUBLIC CUDA::cudart) +endif() + +if (ENABLE_HIP) + target_compile_features(amrexpr PUBLIC hip_std_17) endif() if (ENABLE_SYCL) - target_compile_options(amrexpr PRIVATE -fsycl) + target_compile_options(amrexpr PUBLIC -fsycl) endif() install(TARGETS amrexpr EXPORT amrexprTargets) @@ -80,9 +83,6 @@ install(DIRECTORY ${PROJECT_SOURCE_DIR}/Src/ DESTINATION include install(FILES ${CMAKE_BINARY_DIR}/amrexpr_Config.H DESTINATION include) -set(PACKAGE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) -set(PACKAGE_INCLUDE_INSTALL_DIR "include") - set(amrexpr_FIND_DEPENDENCIES "") if (ENABLE_CUDA) set(amrexpr_FIND_DEPENDENCIES "${amrexpr_FIND_DEPENDENCIES}\nfind_dependency(CUDAToolkit REQUIRED)") @@ -102,6 +102,9 @@ write_basic_package_version_file( COMPATIBILITY AnyNewerVersion ) +set(PACKAGE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) +set(PACKAGE_INCLUDE_INSTALL_DIR "include") + configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/Tools/CMake/amrexprConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/amrexprConfig.cmake" @@ -121,10 +124,8 @@ install(EXPORT amrexprTargets DESTINATION lib/cmake/amrexpr ) -# tests -# enable_testing -# add_subdirectory(Tests) - -# cofig: -# AMREXPR_USE_SYCL, HIP, CUDA, GPU -# NDEBUG +option(ENABLE_TESTS "Enable Tests" OFF) +if (ENABLE_TESTS) + enable_testing() + add_subdirectory(Tests) +endif() diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt new file mode 100644 index 0000000..85b8506 --- /dev/null +++ b/Tests/CMakeLists.txt @@ -0,0 +1,7 @@ + +if (ENABLE_CUDA OR ENABLE_HIP OR ENABLE_SYCL) + add_subdirectory(GPU) +else() + add_subdirectory(Parser) + add_subdirectory(Parser2) +endif() diff --git a/Tests/GPU/CMakeLists.txt b/Tests/GPU/CMakeLists.txt new file mode 100644 index 0000000..3563823 --- /dev/null +++ b/Tests/GPU/CMakeLists.txt @@ -0,0 +1,19 @@ +add_executable(test_gpu main.cpp) + +target_link_libraries(test_gpu PRIVATE amrexpr) + +target_include_directories(test_gpu PRIVATE + $ +) + +target_compile_features(test_gpu PRIVATE cxx_std_17) + +if (ENABLE_CUDA) + set_source_files_properties(main.cpp PROPERTIES LANGUAGE CUDA) + set_target_properties(test_gpu PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + ) + target_compile_options(test_gpu PRIVATE $) +endif() + +add_test(NAME test_gpu COMMAND test_gpu) diff --git a/Tests/Parser/CMakeLists.txt b/Tests/Parser/CMakeLists.txt new file mode 100644 index 0000000..d420de5 --- /dev/null +++ b/Tests/Parser/CMakeLists.txt @@ -0,0 +1,11 @@ +add_executable(test_parser main.cpp) + +target_link_libraries(test_parser PRIVATE amrexpr) + +target_include_directories(test_parser PRIVATE + $ +) + +target_compile_features(test_parser PRIVATE cxx_std_17) + +add_test(NAME test_parser COMMAND test_parser) diff --git a/Tests/Parser2/CMakeLists.txt b/Tests/Parser2/CMakeLists.txt new file mode 100644 index 0000000..fed12bb --- /dev/null +++ b/Tests/Parser2/CMakeLists.txt @@ -0,0 +1,18 @@ +add_executable(test_parser2 main.cpp fn.cpp) + +set(TEST_PARSER2_WORK_DIRECTORY $) +add_custom_command(TARGET test_parser2 PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${CMAKE_CURRENT_SOURCE_DIR}/fn.cpp + ${TEST_PARSER2_WORK_DIRECTORY}/fn.cpp +) + +target_link_libraries(test_parser2 PRIVATE amrexpr) + +target_include_directories(test_parser2 PRIVATE + $ +) + +target_compile_features(test_parser2 PRIVATE cxx_std_17) + +add_test(NAME test_parser2 COMMAND test_parser2) diff --git a/Tools/CMake/amrexprConfig.cmake.in b/Tools/CMake/amrexprConfig.cmake.in index af7091f..4e57d6c 100644 --- a/Tools/CMake/amrexprConfig.cmake.in +++ b/Tools/CMake/amrexprConfig.cmake.in @@ -6,11 +6,3 @@ include(CMakeFindDependencyMacro) @amrexpr_FIND_DEPENDENCIES@ include("@PACKAGE_INSTALL_PREFIX@/lib/cmake/amrexpr/amrexprTargets.cmake") - -# Set the include directories -set(amrexpr_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIR@") - -# Provide the include directories to consumers -set_target_properties(amrexpr::amrexpr PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${amrexpr_INCLUDE_DIRS}" -) diff --git a/Tutorials/libamrexpr/CMakeLists.txt b/Tutorials/libamrexpr/CMakeLists.txt new file mode 100644 index 0000000..8b36dce --- /dev/null +++ b/Tutorials/libamrexpr/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 3.24) + +option(ENABLE_CUDA "Enable CUDA support" OFF) +option(ENABLE_HIP "Enable HIP support" OFF) +option(ENABLE_SYCL "Enable SYCL support" OFF) + +if (ENABLE_CUDA) + set(PROJECT_LANGUAGES CXX CUDA) +elseif (ENABLE_HIP) + set(PROJECT_LANGUAGES CXX HIP) +else() + set(PROJECT_LANGUAGES CXX) +endif() + +project(amrexpr_test LANGUAGES ${PROJECT_LANGUAGES}) + +if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo") + set(CMAKE_BUILD_TYPE Release + CACHE STRING + "Choose the build type, e.g. Release, Debug, or RelWithDebInfo." FORCE) +endif() + +if (ENABLE_CUDA) + find_package(CUDAToolkit REQUIRED) +endif() + +if (ENABLE_HIP) + find_package(hip REQUIRED) +endif() + +if (ENABLE_SYCL) + set(CMAKE_CXX_COMPILER icpx) +endif() + +find_package(amrexpr REQUIRED) + +add_executable(parser_test main.cpp) + +if (ENABLE_CUDA) + set_source_files_properties(main.cpp PROPERTIES LANGUAGE CUDA) + if (NOT DEFINED CUDA_ARCHITECTURES) + message(STATUS "No CUDA architectures specified. Native will be used.") + set_target_properties(parser_test PROPERTIES CUDA_ARCHITECTURES native) + endif() + set_target_properties(parser_test PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + ) +endif() + +target_link_libraries(parser_test PRIVATE amrexpr::amrexpr)