From 9a3c74ae52b36992c3e5416d0bbf7191f4419bc1 Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 14 Apr 2026 11:54:05 +0700 Subject: [PATCH 01/16] Refactor initializer_wrapper by removing GCC conditionals Removed preprocessor directives for GCC around member variables and constructor initialization. --- src/tensor-array/core/initializer_wrapper.hh | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/tensor-array/core/initializer_wrapper.hh b/src/tensor-array/core/initializer_wrapper.hh index 8245f0b..4a3f56e 100644 --- a/src/tensor-array/core/initializer_wrapper.hh +++ b/src/tensor-array/core/initializer_wrapper.hh @@ -53,16 +53,13 @@ namespace tensor_array typedef const _E* const_iterator; private: -#ifdef __GNUC__ iterator _M_array; size_type _M_len; -#endif public: constexpr initializer_wrapper(const_iterator __a, size_type __l) -#ifdef __GNUC__ - : _M_array(__a), _M_len(__l) { } -#endif + : _M_array(__a), _M_len(__l) + { } constexpr initializer_wrapper(const_iterator __begin, const_iterator __end) : _M_array(__begin), _M_len(__end - __begin) @@ -93,4 +90,4 @@ namespace tensor_array }; #endif // !_MSC_VER } -} \ No newline at end of file +} From 648724387c273c3e0142fa10a96bbe9c34c96b5b Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 15:31:31 +0700 Subject: [PATCH 02/16] Link tensorarray_core_object with CUDA runtime --- cmake/ta_core_config.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index e1a2c2a..ff3598f 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -32,6 +32,7 @@ if(CMAKE_CUDA_COMPILER) target_include_directories(tensorarray_core_object PRIVATE $<$:${CUDAToolkit_INCLUDE_DIRS}>) if(MSVC) target_compile_definitions(tensorarray_core_object PRIVATE TENSOR_ARRAY_CORE_EXPORTS) + target_link_libraries(tensorarray_core_object PRIVATE CUDA::cudadevrt) endif() # find_package(CUDAToolkit REQUIRED) From 8215ae5c8ab9ebb7813147f71bba7f63b4019a7f Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 15:48:07 +0700 Subject: [PATCH 03/16] Change CUDA library link from cudadevrt to cudart --- cmake/ta_core_config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index ff3598f..8121832 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -32,7 +32,7 @@ if(CMAKE_CUDA_COMPILER) target_include_directories(tensorarray_core_object PRIVATE $<$:${CUDAToolkit_INCLUDE_DIRS}>) if(MSVC) target_compile_definitions(tensorarray_core_object PRIVATE TENSOR_ARRAY_CORE_EXPORTS) - target_link_libraries(tensorarray_core_object PRIVATE CUDA::cudadevrt) + target_link_libraries(tensorarray_core_object PRIVATE CUDA::cudart) endif() # find_package(CUDAToolkit REQUIRED) From 05f3b6a1f768aae36df85324e02a422b37de65db Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 16:00:16 +0700 Subject: [PATCH 04/16] Remove target_link_libraries for CUDA::cudart Removed CUDA runtime library linking for MSVC. --- cmake/ta_core_config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index 8121832..fad15fc 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -32,7 +32,6 @@ if(CMAKE_CUDA_COMPILER) target_include_directories(tensorarray_core_object PRIVATE $<$:${CUDAToolkit_INCLUDE_DIRS}>) if(MSVC) target_compile_definitions(tensorarray_core_object PRIVATE TENSOR_ARRAY_CORE_EXPORTS) - target_link_libraries(tensorarray_core_object PRIVATE CUDA::cudart) endif() # find_package(CUDAToolkit REQUIRED) @@ -65,6 +64,7 @@ if(CUDAToolkit_FOUND) target_link_libraries( tensorarray_core PRIVATE $<$:CUDA::cublas> + PRIVATE CUDA::cudart ) endif() From 2cf960523a9a314e85815174faf347061eb441e9 Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 16:21:45 +0700 Subject: [PATCH 05/16] Remove CUDA::cudart from tensorarray_core libraries --- cmake/ta_core_config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index fad15fc..110cd2e 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -64,8 +64,8 @@ if(CUDAToolkit_FOUND) target_link_libraries( tensorarray_core PRIVATE $<$:CUDA::cublas> - PRIVATE CUDA::cudart ) + set_property(TARGET tensorarray_core PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON) endif() install( From 7c24f62cc49df7a0dc784eec156c47a21ff77c99 Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 16:22:37 +0700 Subject: [PATCH 06/16] Enable CUDA resolve device symbols for tensorarray_core --- cmake/ta_core_config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index 110cd2e..68b17a7 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -61,11 +61,11 @@ add_library(tensorarray_core_static STATIC $:CUDA::cublas> ) - set_property(TARGET tensorarray_core PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON) endif() install( From 29d9e3b671ae6e1bd4ca45d5fe51ff9994e81e66 Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 16:39:55 +0700 Subject: [PATCH 07/16] Disable CUDA_RESOLVE_DEVICE_SYMBOLS for tensorarray_core --- cmake/ta_core_config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index 68b17a7..cce01e7 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -61,10 +61,10 @@ add_library(tensorarray_core_static STATIC $:CUDA::cublas> + PRIVATE CUDA::cudadevrt ) endif() From 8a3062ac56b26ea223c114707b2885baff4ba824 Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 16:48:30 +0700 Subject: [PATCH 08/16] Enable CUDA_RESOLVE_DEVICE_SYMBOLS property Enable CUDA device symbol resolution for tensorarray_core. --- cmake/ta_core_config.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index cce01e7..7b7402d 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -61,10 +61,11 @@ add_library(tensorarray_core_static STATIC $:CUDA::cublas> - PRIVATE CUDA::cudadevrt + PRIVATE CUDA::cudart ) endif() From 95eba731509a63d6e7775b87c31d10bfe2166b60 Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 17:29:43 +0700 Subject: [PATCH 09/16] Update tensorarray_core properties for CUDA --- cmake/ta_core_config.cmake | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index 7b7402d..dfbf699 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -61,11 +61,10 @@ add_library(tensorarray_core_static STATIC $:CUDA::cublas> - PRIVATE CUDA::cudart ) endif() From 34a0aa3f1e89f6b702e0fd75a839be2fc01aeacf Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 17:51:36 +0700 Subject: [PATCH 10/16] Modify tensorarray_core_object library type based on MSVC --- cmake/ta_core_config.cmake | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index dfbf699..d0595b9 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -24,7 +24,11 @@ endif() if(CMAKE_CUDA_COMPILER) enable_language(CUDA) find_package(CUDAToolkit REQUIRED) - add_library(tensorarray_core_object OBJECT ${TensorArray_Core_cc} ${TensorArray_Core_cu}) + if(MSVC) + add_library(tensorarray_core_object SHARED ${TensorArray_Core_cc} ${TensorArray_Core_cu}) + else() + add_library(tensorarray_core_object OBJECT ${TensorArray_Core_cc} ${TensorArray_Core_cu}) + endif() set_property(TARGET tensorarray_core_object PROPERTY CUDA_STANDARD 17) set_property(TARGET tensorarray_core_object PROPERTY CUDA_STANDARD_REQUIRED ON) set_property(TARGET tensorarray_core_object PROPERTY CUDA_EXTENSIONS OFF) @@ -56,12 +60,26 @@ set_property(TARGET tensorarray_core_object PROPERTY CXX_EXTENSIONS OFF) set_property(TARGET tensorarray_core_object PROPERTY POSITION_INDEPENDENT_CODE 1) # shared and static libraries built from the same object files +if(MSVC) +install( + TARGETS tensorarray_core_object + EXPORT TensorArrayTargets + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT Runtime + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/tensor-array" + COMPONENT Runtime + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/tensor-array" + COMPONENT Development +) + +add_library(TensorArray::core ALIAS tensorarray_core_object) + +else() add_library(tensorarray_core SHARED $) add_library(tensorarray_core_static STATIC $) if(CUDAToolkit_FOUND) set_property(TARGET tensorarray_core PROPERTY CUDA_SEPARABLE_COMPILATION ON) - set_property(TARGET tensorarray_core PROPERTY LINKER_LANGUAGE CUDA) target_link_libraries( tensorarray_core PRIVATE $<$:CUDA::cublas> @@ -93,3 +111,5 @@ install( add_library(TensorArray::core ALIAS tensorarray_core) add_library(TensorArray::core_static ALIAS tensorarray_core_static) add_library(TensorArray::core_object ALIAS tensorarray_core_object) + +endif() From e03ec9f7ac585c1efc81f3bd246ca1581fb6166b Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 18:03:38 +0700 Subject: [PATCH 11/16] Link tensorarray_core with CUDA cublas library --- cmake/ta_core_config.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index d0595b9..a7403fa 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -36,6 +36,7 @@ if(CMAKE_CUDA_COMPILER) target_include_directories(tensorarray_core_object PRIVATE $<$:${CUDAToolkit_INCLUDE_DIRS}>) if(MSVC) target_compile_definitions(tensorarray_core_object PRIVATE TENSOR_ARRAY_CORE_EXPORTS) + target_link_libraries(tensorarray_core PRIVATE $<$:CUDA::cublas>) endif() # find_package(CUDAToolkit REQUIRED) From 7865e28bd66ecc2b65cc5aa8fe635928f0007e6a Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 18:12:04 +0700 Subject: [PATCH 12/16] Fix target link library for tensorarray_core_object --- cmake/ta_core_config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index a7403fa..e397758 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -36,7 +36,7 @@ if(CMAKE_CUDA_COMPILER) target_include_directories(tensorarray_core_object PRIVATE $<$:${CUDAToolkit_INCLUDE_DIRS}>) if(MSVC) target_compile_definitions(tensorarray_core_object PRIVATE TENSOR_ARRAY_CORE_EXPORTS) - target_link_libraries(tensorarray_core PRIVATE $<$:CUDA::cublas>) + target_link_libraries(tensorarray_core_object PRIVATE $<$:CUDA::cublas>) endif() # find_package(CUDAToolkit REQUIRED) From e57e2ff14b621efe583582985b5f29c3b0a678a8 Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 21:53:15 +0700 Subject: [PATCH 13/16] Specify C and C++ standards for tests Set C and C++ standards for tensorarray_core_tests target. --- tests/tensor-array/core/cmake/ta_core_tests.cmake | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/tensor-array/core/cmake/ta_core_tests.cmake b/tests/tensor-array/core/cmake/ta_core_tests.cmake index da6401d..6f22e82 100644 --- a/tests/tensor-array/core/cmake/ta_core_tests.cmake +++ b/tests/tensor-array/core/cmake/ta_core_tests.cmake @@ -19,6 +19,14 @@ add_executable(tensorarray_core_tests ${TensorArray_tests}) target_include_directories(tensorarray_core_tests PRIVATE ${PROJECT_SOURCE_DIR}/src) target_link_libraries(tensorarray_core_tests PUBLIC TensorArray::core) +set_property(TARGET tensorarray_core_tests PROPERTY C_STANDARD 11) +set_property(TARGET tensorarray_core_tests PROPERTY C_STANDARD_REQUIRED ON) +set_property(TARGET tensorarray_core_tests PROPERTY C_EXTENSIONS OFF) + +set_property(TARGET tensorarray_core_tests PROPERTY CXX_STANDARD 17) +set_property(TARGET tensorarray_core_tests PROPERTY CXX_STANDARD_REQUIRED ON) +set_property(TARGET tensorarray_core_tests PROPERTY CXX_EXTENSIONS OFF) + foreach(test ${TensorArray_tests_src}) get_filename_component(TName ${test} NAME_WE) add_test(NAME ${TName} COMMAND tensorarray_core_tests ${TName}) From f585948e9b2512cdf2994c381e326976e627f0b6 Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 22:44:08 +0700 Subject: [PATCH 14/16] Update README.md From d0892e2a3e1a506efd5090206bd17b54fcd9f654 Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 23:08:17 +0700 Subject: [PATCH 15/16] Add category for SARIF upload in msvc.yml --- .github/workflows/msvc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/msvc.yml b/.github/workflows/msvc.yml index d4f9072..277bf0f 100644 --- a/.github/workflows/msvc.yml +++ b/.github/workflows/msvc.yml @@ -65,6 +65,7 @@ jobs: uses: github/codeql-action/upload-sarif@v3 with: sarif_file: ${{ steps.run-analysis.outputs.sarif }} + category: 'msvc-code-analysis' # Upload SARIF file as an Artifact to download and view # - name: Upload SARIF as an Artifact From 96d14c7c33577c6eb389ebd467a3747e3ef6dbff Mon Sep 17 00:00:00 2001 From: Noob <63889503+BigNoobWasTaken@users.noreply.github.com> Date: Tue, 21 Apr 2026 23:34:45 +0700 Subject: [PATCH 16/16] Remove category from SARIF upload step Removed category from SARIF upload step in workflow. --- .github/workflows/msvc.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/msvc.yml b/.github/workflows/msvc.yml index 277bf0f..d4f9072 100644 --- a/.github/workflows/msvc.yml +++ b/.github/workflows/msvc.yml @@ -65,7 +65,6 @@ jobs: uses: github/codeql-action/upload-sarif@v3 with: sarif_file: ${{ steps.run-analysis.outputs.sarif }} - category: 'msvc-code-analysis' # Upload SARIF file as an Artifact to download and view # - name: Upload SARIF as an Artifact