Skip to content

Commit d77ecfd

Browse files
committed
Refactor NSS and DNSS implementations for improved readability and modularity
- Rewrote legacy code into clean C++17 style. - Added missing method implementations and input validation. - Introduced options struct for configurable parameters in NSS and DNSS. - Implemented CUDA support for DNSS rotational feature computation. - Added new CMake configuration for building with or without CUDA. - Updated README to reflect changes and provide build instructions. - Added .gitignore to exclude build directories.
1 parent b4b1df8 commit d77ecfd

File tree

6 files changed

+997
-443
lines changed

6 files changed

+997
-443
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build/
2+
build-cuda/

CMakeLists.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
cmake_minimum_required(VERSION 3.20)
2+
3+
project(DNSS LANGUAGES CXX)
4+
5+
option(DNSS_ENABLE_CUDA "Enable CUDA acceleration for DNSS rotational feature computation" OFF)
6+
7+
add_library(dnss NSS.cpp NSS.h)
8+
target_include_directories(dnss PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
9+
target_compile_features(dnss PUBLIC cxx_std_17)
10+
11+
if(DNSS_ENABLE_CUDA)
12+
enable_language(CUDA)
13+
find_package(CUDAToolkit REQUIRED)
14+
if(NOT CMAKE_CUDA_ARCHITECTURES)
15+
set(CMAKE_CUDA_ARCHITECTURES native)
16+
endif()
17+
target_sources(dnss PRIVATE dnss_cuda.cu)
18+
target_compile_definitions(dnss PRIVATE DNSS_HAS_CUDA=1)
19+
target_link_libraries(dnss PUBLIC CUDA::cudart)
20+
set_target_properties(dnss PROPERTIES CUDA_SEPARABLE_COMPILATION ON CUDA_RESOLVE_DEVICE_SYMBOLS ON)
21+
endif()

0 commit comments

Comments
 (0)