From 1fa9d2474e0568bb83bf1de81821b71ba4f0c654 Mon Sep 17 00:00:00 2001 From: Janusch Patas Date: Mon, 23 Oct 2023 10:08:12 +0200 Subject: [PATCH 1/3] make it build under ubuntu. Print error message instead crash --- CMakeLists.txt | 30 ++++++++++++++++++++++-------- include/CudaModularProgram.h | 28 +++++++++++++++++++++------- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index aad085d..027b5d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.26) +cmake_minimum_required(VERSION 3.22) project(SimLOD) include(FetchContent) @@ -19,7 +19,15 @@ set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT $ set_target_properties(${PROJECT_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "$" VS_DEBUGGER_COMMAND "$" VS_DEBUGGER_ENVIRONMENT "PATH=%PATH%;${CMAKE_PREFIX_PATH}") - +# Build options based on CMAKE_BUILD_TYPE +function(configure_build_type) + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + target_compile_options(${PROJECT_NAME} PRIVATE -O0 -g) + elseif (CMAKE_BUILD_TYPE STREQUAL "Release") + target_compile_options(${PROJECT_NAME} PRIVATE -O3) + endif () +endfunction() +configure_build_type() target_include_directories(${PROJECT_NAME} PRIVATE include @@ -29,14 +37,20 @@ target_include_directories(${PROJECT_NAME} PRIVATE # Dependencies ## CUDA toolkit -find_package(CUDAToolkit 11.7 REQUIRED) +find_package(CUDAToolkit 11.8 REQUIRED) target_include_directories(${PROJECT_NAME} PRIVATE CUDAToolkit_INCLUDE_DIRS) -target_link_libraries(${PROJECT_NAME} - CUDA::cuda_driver - CUDA::nvrtc - CUDA::nvrtc_static - CUDA::nvrtc_builtins_static) +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + target_link_libraries(${PROJECT_NAME} + CUDA::cuda_driver + CUDA::nvrtc + CUDA::nvrtc_static + CUDA::nvrtc_builtins_static) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(${PROJECT_NAME} + CUDA::cuda_driver + CUDA::nvrtc) +endif() ## OpenGL find_package(OpenGL REQUIRED) diff --git a/include/CudaModularProgram.h b/include/CudaModularProgram.h index 59a8bb1..2217db9 100644 --- a/include/CudaModularProgram.h +++ b/include/CudaModularProgram.h @@ -43,18 +43,32 @@ struct CudaModule{ // cout << "================================================================================" << endl; printfmt("compiling {} ", fs::path(path).filename().string()); - success = false; - - string dir = fs::path(path).parent_path().string(); - string optInclude = "-I " + dir; + const char* cuda_path_cstr = std::getenv("CUDA_PATH"); + std::string cuda_path; + if (cuda_path_cstr) { + cuda_path = std::string(cuda_path_cstr); + if (!cuda_path.empty()) { + std::cout << "\nCUDA_PATH is set to: " << cuda_path << std::endl; + } else { + std::cout << "\nCUDA_PATH is empty. Please set it." << std::endl; + exit(-1); + } + } else { + std::cout << "\nCUDA_PATH is not set. Please set it." << std::endl; + exit(-1); + } - string cuda_path = std::getenv("CUDA_PATH"); - string cuda_include = "-I " + cuda_path + "/include"; + const string cuda_include = "-I " + cuda_path + "/include"; + const string dir = fs::path(path).parent_path().string(); + const string optInclude = "-I " + dir; nvrtcProgram prog; string source = readFile(path); nvrtcCreateProgram(&prog, source.c_str(), name.c_str(), 0, NULL, NULL); - std::vector opts = { + + success = false; + + std::vector opts = { // "--gpu-architecture=compute_75", "--gpu-architecture=compute_86", "--use_fast_math", From baff58167799193c28e2dad86a48b198146f6e93 Mon Sep 17 00:00:00 2001 From: Janusch Patas Date: Mon, 23 Oct 2023 10:30:32 +0200 Subject: [PATCH 2/3] Set default buildtype --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 027b5d5..0f32a5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,10 @@ function(configure_build_type) target_compile_options(${PROJECT_NAME} PRIVATE -O0 -g) elseif (CMAKE_BUILD_TYPE STREQUAL "Release") target_compile_options(${PROJECT_NAME} PRIVATE -O3) + else() + message(WARNING "No CMAKE_BUILD_TYPE specified, defaulting to Release settings.") + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Default build type: Release" FORCE) + target_compile_options(${PROJECT_NAME} PRIVATE -O3) endif () endfunction() configure_build_type() From 802bbd0968f4af74079e66602e386dda6398ed10 Mon Sep 17 00:00:00 2001 From: Janusch Patas Date: Tue, 28 Nov 2023 08:52:40 +0100 Subject: [PATCH 3/3] remove nvrtc_static and nvrtc_builtins_static --- CMakeLists.txt | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f32a5c..725fe10 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,17 +44,10 @@ target_include_directories(${PROJECT_NAME} PRIVATE find_package(CUDAToolkit 11.8 REQUIRED) target_include_directories(${PROJECT_NAME} PRIVATE CUDAToolkit_INCLUDE_DIRS) -if(CMAKE_SYSTEM_NAME STREQUAL "Windows") - target_link_libraries(${PROJECT_NAME} - CUDA::cuda_driver - CUDA::nvrtc - CUDA::nvrtc_static - CUDA::nvrtc_builtins_static) -elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") - target_link_libraries(${PROJECT_NAME} - CUDA::cuda_driver - CUDA::nvrtc) -endif() + +target_link_libraries(${PROJECT_NAME} + CUDA::cuda_driver + CUDA::nvrtc) ## OpenGL find_package(OpenGL REQUIRED)