From e924713b125c4da60195d1eb45c488702a523a2f Mon Sep 17 00:00:00 2001 From: MuGdxy Date: Thu, 6 Nov 2025 18:09:14 +0900 Subject: [PATCH 1/4] setup --- CMakePresets.json | 38 ++++++++++++++++++++------ cmake/options.cmake | 1 + example/CMakeLists.txt | 2 +- test/eigen_test/CMakeLists.txt | 2 +- test/linear_system_test/CMakeLists.txt | 2 +- test/spgrid_test/CMakeLists.txt | 2 +- test/unit_test/CMakeLists.txt | 2 +- 7 files changed, 36 insertions(+), 13 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index bc16b324..37b1d25f 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -17,32 +17,54 @@ "MUDA_FORCE_CHECK": "ON", "MUDA_WITH_CHECK": "ON", "MUDA_WITH_COMPUTE_GRAPH": "ON", - "MUDA_WITH_NVTX3": "ON" + "MUDA_WITH_NVTX3": "OFF" } }, { - "name": "ci-release", - "displayName": "CI-Release Configuration", + "name": "ci-release-20", + "displayName": "CI-Release Configuration (C++20)", "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" + "CMAKE_BUILD_TYPE": "Release", + "MUDA_APP_CXX_STANDARD": "20" + } + }, + { + "name": "ci-release-17", + "displayName": "CI-Release Configuration (C++17)", + "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", + "MUDA_APP_CXX_STANDARD": "17" } } ], "buildPresets": [ { - "name": "ci-release", - "configurePreset": "ci-release" + "name": "ci-release-20", + "configurePreset": "ci-release-20" + }, + { + "name": "ci-release-17", + "configurePreset": "ci-release-17" } ], "testPresets": [ { - "name": "ci-release", - "configurePreset": "ci-release" + "name": "ci-release-20", + "configurePreset": "ci-release-20" + }, + { + "name": "ci-release-17", + "configurePreset": "ci-release-17" } ] } diff --git a/cmake/options.cmake b/cmake/options.cmake index 34528bf6..4fe458c2 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -7,6 +7,7 @@ option(MUDA_WITH_NVTX3 "turn on nividia tools extension library" OFF) # build targets: option(MUDA_BUILD_EXAMPLE "build muda examples. if you want to see how to use muda, you could enable this option." ON) option(MUDA_BUILD_TEST "build muda test. if you're the developer, you could enable this option." OFF) +option(MUDA_APP_CXX_STANDARD "set c++ standard for muda app(test/example)" 20) # short cut option(MUDA_DEV "build muda example and unit test. if you're the developer, you could enable this option." OFF) diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index 767f4fad..ad35dee9 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -13,7 +13,7 @@ file(GLOB_RECURSE SOURCE_FILES add_executable(muda_example) target_sources(muda_example PRIVATE ${SOURCE_FILES} ${MUDA_HEADER_FILES}) -target_compile_features(muda_example PRIVATE cxx_std_20) +target_compile_features(muda_example PRIVATE "cxx_std_${MUDA_APP_CXX_STANDARD}") set_target_properties(muda_example PROPERTIES CUDA_SEPARABLE_COMPILATION ON) # target_link_libraries(muda_example PRIVATE fmt::fmt-header-only) diff --git a/test/eigen_test/CMakeLists.txt b/test/eigen_test/CMakeLists.txt index 3f68f249..67f4c95b 100644 --- a/test/eigen_test/CMakeLists.txt +++ b/test/eigen_test/CMakeLists.txt @@ -3,7 +3,7 @@ find_package(Eigen3 REQUIRED) file(GLOB_RECURSE SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/*.cu" "${CMAKE_CURRENT_SOURCE_DIR}/*.h") add_executable(muda_eigen_test) target_sources(muda_eigen_test PRIVATE ${SOURCE} ${MUDA_HEADER_FILES}) -target_compile_features(muda_eigen_test PRIVATE cxx_std_20) +target_compile_features(muda_eigen_test PRIVATE "cxx_std_${MUDA_APP_CXX_STANDARD}") set_target_properties(muda_eigen_test PROPERTIES CUDA_SEPARABLE_COMPILATION ON) target_include_directories(muda_eigen_test PRIVATE "${PROJECT_SOURCE_DIR}/test" diff --git a/test/linear_system_test/CMakeLists.txt b/test/linear_system_test/CMakeLists.txt index f7c8e64f..a11713b0 100644 --- a/test/linear_system_test/CMakeLists.txt +++ b/test/linear_system_test/CMakeLists.txt @@ -6,7 +6,7 @@ file(GLOB_RECURSE SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/*.h") 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) +target_compile_features(muda_linear_system_test PRIVATE "cxx_std_${MUDA_APP_CXX_STANDARD}") set_target_properties(muda_linear_system_test PROPERTIES CUDA_SEPARABLE_COMPILATION ON) target_include_directories(muda_linear_system_test PRIVATE "${PROJECT_SOURCE_DIR}/test" diff --git a/test/spgrid_test/CMakeLists.txt b/test/spgrid_test/CMakeLists.txt index 3048418a..d9b66ae0 100644 --- a/test/spgrid_test/CMakeLists.txt +++ b/test/spgrid_test/CMakeLists.txt @@ -7,7 +7,7 @@ file(GLOB_RECURSE SOURCE add_executable(muda_spgrid_test) target_sources(muda_spgrid_test PRIVATE ${SOURCE} ${MUDA_HEADER_FILES}) -target_compile_features(muda_spgrid_test PRIVATE cxx_std_20) +target_compile_features(muda_spgrid_test PRIVATE "cxx_std_${MUDA_APP_CXX_STANDARD}") set_target_properties(muda_spgrid_test PROPERTIES CUDA_SEPARABLE_COMPILATION ON) target_include_directories(muda_spgrid_test PRIVATE "${PROJECT_SOURCE_DIR}/test" diff --git a/test/unit_test/CMakeLists.txt b/test/unit_test/CMakeLists.txt index 6f1b86bc..fe7af979 100644 --- a/test/unit_test/CMakeLists.txt +++ b/test/unit_test/CMakeLists.txt @@ -6,7 +6,7 @@ file(GLOB_RECURSE SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/*.h") add_executable(muda_unit_test) target_sources(muda_unit_test PRIVATE ${SOURCE} ${MUDA_HEADER_FILES}) -target_compile_features(muda_unit_test PRIVATE cxx_std_20) +target_compile_features(muda_unit_test PRIVATE "cxx_std_${MUDA_APP_CXX_STANDARD}") set_target_properties(muda_unit_test PROPERTIES CUDA_SEPARABLE_COMPILATION ON) target_include_directories(muda_unit_test PRIVATE "${PROJECT_SOURCE_DIR}/test" From 521141adb305c518106a346126ace9133620abe7 Mon Sep 17 00:00:00 2001 From: MuGdxy Date: Thu, 6 Nov 2025 18:12:16 +0900 Subject: [PATCH 2/4] fix cudaPitchedPtr --- src/muda/buffer/details/buffer_2d_view.inl | 10 ++++++---- src/muda/buffer/details/buffer_3d_view.inl | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/muda/buffer/details/buffer_2d_view.inl b/src/muda/buffer/details/buffer_2d_view.inl index bd6ad3c2..1b7b8d2d 100644 --- a/src/muda/buffer/details/buffer_2d_view.inl +++ b/src/muda/buffer/details/buffer_2d_view.inl @@ -110,10 +110,12 @@ template MUDA_GENERIC cudaPitchedPtr Buffer2DViewT::cuda_pitched_ptr() const MUDA_NOEXCEPT { // don't use make_cudaPitchedPtr (__host__ only function) - return cudaPitchedPtr{.ptr = remove_const(m_data), - .pitch = remove_const(m_pitch_bytes), - .xsize = m_origin_width * sizeof(T), - .ysize = m_origin_height}; + cudaPitchedPtr R; + R.ptr = remove_const(m_data); + R.pitch = remove_const(m_pitch_bytes); + R.xsize = m_origin_width * sizeof(T); + R.ysize = m_origin_height; + return R; } template diff --git a/src/muda/buffer/details/buffer_3d_view.inl b/src/muda/buffer/details/buffer_3d_view.inl index 617c142a..6ddc67e6 100644 --- a/src/muda/buffer/details/buffer_3d_view.inl +++ b/src/muda/buffer/details/buffer_3d_view.inl @@ -112,10 +112,12 @@ MUDA_GENERIC auto Buffer3DViewT::cuda_pitched_ptr() const MUDA_NOEXCEPT->cudaPitchedPtr { // don't use make_cudaPitchedPtr (__host__ only function) - return cudaPitchedPtr{.ptr = remove_const(m_data), - .pitch = remove_const(m_pitch_bytes), - .xsize = m_origin_width * sizeof(T), - .ysize = m_origin_height}; + cudaPitchedPtr R; + R.ptr = remove_const(m_data); + R.pitch = remove_const(m_pitch_bytes); + R.xsize = m_origin_width * sizeof(T); + R.ysize = m_origin_height; + return R; } template From 2e08237f869573b545abdc5afbf3dc882a574914 Mon Sep 17 00:00:00 2001 From: MuGdxy Date: Thu, 6 Nov 2025 18:36:32 +0900 Subject: [PATCH 3/4] update ci --- .github/workflows/cmake.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index da3ad918..a509298b 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -22,6 +22,8 @@ jobs: strategy: matrix: os: [ubuntu-22.04] + std: [20, 17] + runs-on: ${{ matrix.os }} @@ -57,5 +59,5 @@ jobs: - name: Build MUDA run: | - cmake --preset ci-release - cmake --build --preset ci-release --parallel 4 + cmake --preset ci-release-${{ matrix.std }} + cmake --build --preset ci-release-${{ matrix.std }} --parallel 4 From e2aa9e4a72b50fe765f85f17cbc05d39a191528a Mon Sep 17 00:00:00 2001 From: MuGdxy Date: Mon, 22 Dec 2025 22:50:54 +0800 Subject: [PATCH 4/4] fix missing argument list of muda::CDenseMatrixView --- src/muda/ext/linear_system/details/device_dense_matrix.inl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/muda/ext/linear_system/details/device_dense_matrix.inl b/src/muda/ext/linear_system/details/device_dense_matrix.inl index 014707d2..6ecb3cdc 100644 --- a/src/muda/ext/linear_system/details/device_dense_matrix.inl +++ b/src/muda/ext/linear_system/details/device_dense_matrix.inl @@ -105,13 +105,13 @@ DeviceDenseMatrix& DeviceDenseMatrix::operator=(const Eigen::MatrixX template DenseMatrixView DeviceDenseMatrix::T() { - return DenseMatrixView{m_data, m_row, m_col, true, m_sym}; + return DenseMatrixView{m_data, m_row, m_col, true, m_sym}; } template CDenseMatrixView DeviceDenseMatrix::T() const { - return CDenseMatrixView{m_data, m_row, m_col, true, m_sym}; + return CDenseMatrixView{m_data, m_row, m_col, true, m_sym}; } template