diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml new file mode 100644 index 00000000..da3ad918 --- /dev/null +++ b/.github/workflows/cmake.yml @@ -0,0 +1,61 @@ +name: cmake + +on: + pull_request: + branches: + - "mini20" + paths-ignore: + - ".clang-format" + - ".clangd" + - ".gitignore" + - "LICENSE" + - "README.md" + - "docs/**" + - ".github/workflows/xmake.yml" + - "**/xmake.lua" + - "**/*.bazel" + - "**/*.bzl" + - "**/*.bazelrc" + +jobs: + build_and_test: + strategy: + matrix: + os: [ubuntu-22.04] + + runs-on: ${{ matrix.os }} + + concurrency: + group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-cmake-${{ matrix.os }} + cancel-in-progress: true + + steps: + - name: Maximize build space + if: matrix.os == 'ubuntu-22.04' + uses: AdityaGarg8/remove-unwanted-software@v4.1 + with: + remove-android: "true" + remove-haskell: "true" + remove-codeql: "true" + + - name: Setup cuda + uses: Jimver/cuda-toolkit@v0.2.28 + id: cuda-toolkit + with: + cuda: "12.8.1" + + - name: Setup ninja and Eigen3 on Ubuntu + if: matrix.os == 'ubuntu-22.04' + run: | + sudo apt update + sudo apt install ninja-build libeigen3-dev -y + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: true + + - name: Build MUDA + run: | + cmake --preset ci-release + cmake --build --preset ci-release --parallel 4 diff --git a/.gitignore b/.gitignore index a7004ca8..b3a2b78a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,6 @@ vsxmake2022 # CMake Cache CMakeBuild/ + +# IntelliJ IDEA +.idea/ diff --git a/CMakeLists.txt b/CMakeLists.txt index e9992f67..5f255052 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,5 +109,6 @@ if(MUDA_BUILD_EXAMPLE) endif() if(MUDA_BUILD_TEST) + enable_testing() add_subdirectory("test") endif() \ No newline at end of file diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 00000000..bc16b324 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,48 @@ +{ + "version": 6, + "cmakeMinimumRequired": { + "major": 3, + "minor": 20, + "patch": 0 + }, + "configurePresets": [ + { + "name": "config-base", + "displayName": "base Configuration", + "hidden": true, + "description": "Default build using Ninja generator", + "generator": "Ninja", + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "MUDA_FORCE_CHECK": "ON", + "MUDA_WITH_CHECK": "ON", + "MUDA_WITH_COMPUTE_GRAPH": "ON", + "MUDA_WITH_NVTX3": "ON" + } + }, + { + "name": "ci-release", + "displayName": "CI-Release Configuration", + "inherits": ["config-base"], + "description": "Configuration for CI builds", + "cacheVariables": { + "MUDA_BUILD_TEST": "ON", + "MUDA_BUILD_EXAMPLE": "OFF", + "CMAKE_CUDA_ARCHITECTURES": "89", + "CMAKE_BUILD_TYPE": "Release" + } + } + ], + "buildPresets": [ + { + "name": "ci-release", + "configurePreset": "ci-release" + } + ], + "testPresets": [ + { + "name": "ci-release", + "configurePreset": "ci-release" + } + ] +} diff --git a/src/muda/launch/details/parallel_for.inl b/src/muda/launch/details/parallel_for.inl index 528afb50..98685cfd 100644 --- a/src/muda/launch/details/parallel_for.inl +++ b/src/muda/launch/details/parallel_for.inl @@ -127,7 +127,7 @@ MUDA_HOST MUDA_NODISCARD auto ParallelFor::as_node_parms(int count, F&& f) { using CallableType = raw_type_t; - check_input(count); + // check_input(count); auto parms = std::make_shared>(std::forward(f), count); if(m_grid_dim <= 0) // dynamic grid dim diff --git a/src/muda/launch/parallel_for.h b/src/muda/launch/parallel_for.h index 87007cf2..05fbe122 100644 --- a/src/muda/launch/parallel_for.h +++ b/src/muda/launch/parallel_for.h @@ -82,10 +82,10 @@ class ParallelForDetails private: template - friend MUDA_GLOBAL void details::parallel_for_kernel(ParallelForCallable f); + friend MUDA_GLOBAL void details::parallel_for_kernel(details::ParallelForCallable f); template - friend MUDA_GLOBAL void details::grid_stride_loop_kernel(ParallelForCallable f); + friend MUDA_GLOBAL void details::grid_stride_loop_kernel(details::ParallelForCallable f); MUDA_DEVICE ParallelForDetails(ParallelForType type, int i, int total_num) MUDA_NOEXCEPT : m_type(type), @@ -169,6 +169,7 @@ class ParallelFor : public LaunchBase m_block_dim(blockDim), m_shared_mem_size(shared_mem_size) { + std::cout << "[DEBUG]" << "blockDim: " << blockDim << std::endl; } diff --git a/test/eigen_test/CMakeLists.txt b/test/eigen_test/CMakeLists.txt index 80822078..3f68f249 100644 --- a/test/eigen_test/CMakeLists.txt +++ b/test/eigen_test/CMakeLists.txt @@ -11,3 +11,5 @@ target_include_directories(muda_eigen_test PRIVATE target_link_libraries(muda_eigen_test PRIVATE muda Eigen3::Eigen) source_group(TREE "${PROJECT_SOURCE_DIR}/test" PREFIX "test" FILES ${SOURCE}) source_group(TREE "${PROJECT_SOURCE_DIR}/src" PREFIX "src" FILES ${MUDA_HEADER_FILES}) + +add_test(NAME muda_eigen_test COMMAND muda_eigen_test) diff --git a/test/linear_system_test/CMakeLists.txt b/test/linear_system_test/CMakeLists.txt index db29b783..f7c8e64f 100644 --- a/test/linear_system_test/CMakeLists.txt +++ b/test/linear_system_test/CMakeLists.txt @@ -4,13 +4,15 @@ file(GLOB_RECURSE SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/*.cu" "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -add_executable(muda_linear_sysytem_test) -target_sources(muda_linear_sysytem_test PRIVATE ${SOURCE} ${MUDA_HEADER_FILES}) -target_compile_features(muda_linear_sysytem_test PRIVATE cxx_std_20) -set_target_properties(muda_linear_sysytem_test PROPERTIES CUDA_SEPARABLE_COMPILATION ON) -target_include_directories(muda_linear_sysytem_test PRIVATE +add_executable(muda_linear_system_test) +target_sources(muda_linear_system_test PRIVATE ${SOURCE} ${MUDA_HEADER_FILES}) +target_compile_features(muda_linear_system_test PRIVATE cxx_std_20) +set_target_properties(muda_linear_system_test PROPERTIES CUDA_SEPARABLE_COMPILATION ON) +target_include_directories(muda_linear_system_test PRIVATE "${PROJECT_SOURCE_DIR}/test" "${PROJECT_SOURCE_DIR}/external") -target_link_libraries(muda_linear_sysytem_test PRIVATE muda cusparse cublas cusolver Eigen3::Eigen) +target_link_libraries(muda_linear_system_test PRIVATE muda cusparse cublas cusolver Eigen3::Eigen) source_group(TREE "${PROJECT_SOURCE_DIR}/test" PREFIX "test" FILES ${SOURCE}) -source_group(TREE "${PROJECT_SOURCE_DIR}/src" PREFIX "src" FILES ${MUDA_HEADER_FILES}) \ No newline at end of file +source_group(TREE "${PROJECT_SOURCE_DIR}/src" PREFIX "src" FILES ${MUDA_HEADER_FILES}) + +add_test(NAME muda_linear_system_test COMMAND muda_linear_system_test) diff --git a/test/spgrid_test/CMakeLists.txt b/test/spgrid_test/CMakeLists.txt index ae271781..3048418a 100644 --- a/test/spgrid_test/CMakeLists.txt +++ b/test/spgrid_test/CMakeLists.txt @@ -12,4 +12,6 @@ set_target_properties(muda_spgrid_test PROPERTIES CUDA_SEPARABLE_COMPILATION ON) target_include_directories(muda_spgrid_test PRIVATE "${PROJECT_SOURCE_DIR}/test" "${PROJECT_SOURCE_DIR}/external") - target_link_libraries(muda_spgrid_test PRIVATE muda Eigen3::Eigen) \ No newline at end of file +target_link_libraries(muda_spgrid_test PRIVATE muda Eigen3::Eigen) + +add_test(NAME muda_spgrid_test COMMAND muda_spgrid_test) diff --git a/test/unit_test/CMakeLists.txt b/test/unit_test/CMakeLists.txt index 87043c98..6f1b86bc 100644 --- a/test/unit_test/CMakeLists.txt +++ b/test/unit_test/CMakeLists.txt @@ -14,4 +14,6 @@ target_include_directories(muda_unit_test PRIVATE target_link_libraries(muda_unit_test PRIVATE muda cusparse cublas cusolver Eigen3::Eigen) target_compile_definitions(muda_unit_test PRIVATE "-DMUDA_TEST_DATA_DIR=R\"(${PROJECT_SOURCE_DIR}/test/data)\"") source_group(TREE "${PROJECT_SOURCE_DIR}/test" PREFIX "test" FILES ${SOURCE}) -source_group(TREE "${PROJECT_SOURCE_DIR}/src" PREFIX "src" FILES ${MUDA_HEADER_FILES}) \ No newline at end of file +source_group(TREE "${PROJECT_SOURCE_DIR}/src" PREFIX "src" FILES ${MUDA_HEADER_FILES}) + +add_test(NAME muda_unit_test COMMAND muda_unit_test)