diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b7914bee51..c31c2e89d9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.25) +cmake_minimum_required(VERSION 3.30) message("CMake version: ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}") # ============================================================================== @@ -253,6 +253,7 @@ endif() if (ALICEVISION_USE_OPENMP STREQUAL "OFF") set(ALICEVISION_HAVE_OPENMP 0) else() # ON OR AUTO + set(OpenMP_RUNTIME_MSVC "llvm") find_package(OpenMP) if (OPENMP_FOUND) diff --git a/src/aliceVision/alicevision_omp.hpp b/src/aliceVision/alicevision_omp.hpp index 8475e1b6b1..ac02646c6d 100644 --- a/src/aliceVision/alicevision_omp.hpp +++ b/src/aliceVision/alicevision_omp.hpp @@ -17,7 +17,7 @@ inline int omp_get_thread_num() { return 0; } inline int omp_get_max_threads() { return 1; } inline void omp_set_num_threads(int num_threads) {} inline int omp_get_num_procs() { return 1; } -inline void omp_set_nested(int nested) {} +inline void omp_set_max_active_levels(int levels) {} inline void omp_init_lock(omp_lock_t* lock) {} inline void omp_destroy_lock(omp_lock_t* lock) {} diff --git a/src/aliceVision/featureEngine/FeatureExtractor.cpp b/src/aliceVision/featureEngine/FeatureExtractor.cpp index 2b4b17df09..8be0766a7d 100644 --- a/src/aliceVision/featureEngine/FeatureExtractor.cpp +++ b/src/aliceVision/featureEngine/FeatureExtractor.cpp @@ -149,7 +149,7 @@ void FeatureExtractor::process(const HardwareContext& hContext, const image::EIm nbThreads = std::min(cpuJobs.size(), nbThreads); ALICEVISION_LOG_INFO("# threads for extraction: " << nbThreads); - omp_set_nested(1); + omp_set_max_active_levels(2); #pragma omp parallel for num_threads(nbThreads) for (int i = 0; i < cpuJobs.size(); ++i) diff --git a/src/aliceVision/fuseCut/PointCloud.cpp b/src/aliceVision/fuseCut/PointCloud.cpp index 4300f8548e..affb28eeb9 100644 --- a/src/aliceVision/fuseCut/PointCloud.cpp +++ b/src/aliceVision/fuseCut/PointCloud.cpp @@ -141,7 +141,7 @@ void createVerticesWithVisibilities(const StaticVector& cams, for (auto& lock : locks) omp_init_lock(&lock); - omp_set_nested(1); + omp_set_max_active_levels(2); #pragma omp parallel for num_threads(3) for (int c = 0; c < cams.size(); ++c) { @@ -229,7 +229,7 @@ void createVerticesWithVisibilities(const StaticVector& cams, } } } - omp_set_nested(0); + omp_set_max_active_levels(1); for (auto& lock : locks) omp_destroy_lock(&lock); @@ -294,7 +294,7 @@ void PointCloud::fuseFromDepthMaps(const StaticVector& cams, const Point3d ALICEVISION_LOG_INFO("Load depth maps and add points."); { - omp_set_nested(1); + omp_set_max_active_levels(2); #pragma omp parallel for num_threads(3) for (int c = 0; c < cams.size(); c++) { @@ -424,7 +424,7 @@ void PointCloud::fuseFromDepthMaps(const StaticVector& cams, const Point3d } } } - omp_set_nested(0); + omp_set_max_active_levels(1); } ALICEVISION_LOG_INFO("Filter initial 3D points by pixel size to remove duplicates.");