[mlpack-svn] r13867 - mlpack/trunk

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Thu Nov 15 16:07:14 EST 2012


Author: rcurtin
Date: 2012-11-15 16:07:13 -0500 (Thu, 15 Nov 2012)
New Revision: 13867

Modified:
   mlpack/trunk/CMakeLists.txt
Log:
Check for a 64-bit system where ARMA_64BIT_WORD is not enabled, and warn the
user if that is the case.  MLPACK still works fine without ARMA_64BIT_WORD, but
it is not a bad idea to ensure size_t == uword (by defining ARMA_64BIT_WORD on
64-bit systems).


Modified: mlpack/trunk/CMakeLists.txt
===================================================================
--- mlpack/trunk/CMakeLists.txt	2012-11-15 20:20:30 UTC (rev 13866)
+++ mlpack/trunk/CMakeLists.txt	2012-11-15 21:07:13 UTC (rev 13867)
@@ -58,6 +58,28 @@
 
 find_package(Armadillo 2.4.0 REQUIRED)
 
+# If Armadillo was compiled without ARMA_64BIT_WORD and we are on a 64-bit
+# system (where size_t will be 64 bits), suggest to the user that they should
+# compile Armadillo with 64-bit words.
+if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+  # We are on a 64-bit system.  Does Armadillo have ARMA_64BIT_WORD enabled?
+  file(READ "${ARMADILLO_INCLUDE_DIRS}/armadillo_bits/config.hpp" ARMA_CONFIG)
+  string(REGEX MATCH
+      "[\r\n][ ]*#define ARMA_64BIT_WORD"
+      ARMA_HAS_64BIT_WORD_PRE
+      "${ARMA_CONFIG}")
+
+  string(LENGTH "${ARMA_HAS_64BIT_WORD_PRE}" ARMA_HAS_64BIT_WORD)
+
+  if(ARMA_HAS_64BIT_WORD EQUAL 0)
+    message(WARNING "This is a 64-bit system, but Armadillo was compiled "
+        "without 64-bit index support.  Consider recompiling Armadillo with "
+        "ARMA_64BIT_WORD to enable 64-bit indices (large matrix support). "
+        "MLPACK will still work without ARMA_64BIT_WORD defined, but will not "
+        "scale to matrices with more than 4 billion elements.")
+  endif(ARMA_HAS_64BIT_WORD EQUAL 0)
+endif(CMAKE_SIZEOF_VOID_P EQUAL 8)
+
 # On Windows, Armadillo should be using LAPACK and BLAS but we still need to
 # link against it.  We don't want to use the FindLAPACK or FindBLAS modules
 # because then we are required to have a FORTRAN compiler (argh!) so we will try




More information about the mlpack-svn mailing list