[mlpack-git] master: CMake trickery to maybe make travis not crash (a6aca41)

gitdub at mlpack.org gitdub at mlpack.org
Mon Jun 27 08:56:13 EDT 2016


Repository : https://github.com/mlpack/mlpack
On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/34cf8d94f79c9a72ff4199676033b060cd039fcd...425324bf7fb7c86c85d10a909d8a59d4f69b7164

>---------------------------------------------------------------

commit a6aca410001a4161018de08d4ff4322f68bf1dce
Author: Yannis Mentekidis <mentekid at gmail.com>
Date:   Mon Jun 27 13:56:13 2016 +0100

    CMake trickery to maybe make travis not crash


>---------------------------------------------------------------

a6aca410001a4161018de08d4ff4322f68bf1dce
 CMakeLists.txt                             | 18 +++++++++++-------
 src/mlpack/methods/lsh/lsh_search_impl.hpp | 28 ++++++++++++----------------
 2 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2dba9e5..ad26771 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -235,13 +235,17 @@ add_definitions(-DBOOST_TEST_DYN_LINK)
 # Detect OpenMP support in a compiler. If the compiler supports OpenMP, the
 # flags to compile with OpenMP are returned and added.
 if (HAS_OPENMP)
-    find_package(OpenMP)
-    if (OPENMP_FOUND)
-        add_definitions(-DOPENMP_FOUND)
-        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
-        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
-    endif ()
-endif ()
+  add_definitions(-DHAS_OPENMP)
+  find_package(OpenMP)
+  if (OPENMP_FOUND)
+    add_definitions(-DOPENMP_FOUND)
+    set(HAS_OPENMP "1")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+  else ()
+    set(HAS_OPENMP "0")
+  endif ()
+endif()
 
 # Create a 'distclean' target in case the user is using an in-source build for
 # some reason.
diff --git a/src/mlpack/methods/lsh/lsh_search_impl.hpp b/src/mlpack/methods/lsh/lsh_search_impl.hpp
index 17886dc..0e8b11f 100644
--- a/src/mlpack/methods/lsh/lsh_search_impl.hpp
+++ b/src/mlpack/methods/lsh/lsh_search_impl.hpp
@@ -12,6 +12,15 @@
 namespace mlpack {
 namespace neighbor {
 
+inline size_t CalculateMaxThreads()
+{
+  #ifdef OPENMP_FOUND
+    if (HAS_OPENMP)
+      return omp_get_max_threads();
+    return 1;
+  #endif
+  return 1;
+}
 
 // Construct the object with random tables
 template<typename SortPolicy>
@@ -31,12 +40,7 @@ LSHSearch(const arma::mat& referenceSet,
   bucketSize(bucketSize),
   distanceEvaluations(0)
 {
-
-  #ifdef OPENMP_FOUND
-    maxThreads = omp_get_max_threads();
-  #else
-    maxThreads = 1;
-  #endif
+  maxThreads = CalculateMaxThreads();
   // Pass work to training function.
   Train(referenceSet, numProj, numTables, hashWidthIn, secondHashSize,
       bucketSize);
@@ -59,11 +63,7 @@ LSHSearch(const arma::mat& referenceSet,
   bucketSize(bucketSize),
   distanceEvaluations(0)
 {
-  #ifdef OPENMP_FOUND
-    maxThreads = omp_get_max_threads();
-  #else
-    maxThreads = 1;
-  #endif
+  maxThreads = CalculateMaxThreads();
   // Pass work to training function
   Train(referenceSet, numProj, numTables, hashWidthIn, secondHashSize,
       bucketSize, projections);
@@ -82,11 +82,7 @@ LSHSearch<SortPolicy>::LSHSearch() :
     distanceEvaluations(0)
 {
   // Only define maxThreads. Nothing else to do.
-  #ifdef OPENMP_FOUND
-    maxThreads = omp_get_max_threads();
-  #else
-    maxThreads = 1;
-  #endif
+  maxThreads = CalculateMaxThreads();
 }
 
 // Destructor.




More information about the mlpack-git mailing list