[mlpack-svn] [MLPACK] #269: clang compiling issue (was: gcc4.8 (c++11) compiling issue)
MLPACK Trac
trac at coffeetalk-1.cc.gatech.edu
Thu Feb 21 00:50:00 EST 2013
#269: clang compiling issue
---------------------------------------+------------------------------------
Reporter: bianjiang | Owner: rcurtin
Type: defect | Status: accepted
Priority: major | Milestone: mlpack 1.0.5
Component: mlpack | Resolution:
Keywords: clang, compilation error | Blocking:
Blocked By: |
---------------------------------------+------------------------------------
Changes (by rcurtin):
* keywords: => clang, compilation error
* type: wishlist => defect
* milestone: => mlpack 1.0.5
Comment:
Ah, but the nice thing is that with Armadillo you can create a matrix
using the memory which alglib allocated. The only difficulty is that
alglib is row-major and Armadillo is column-major (this is odd because
LAPACK expects a column-major matrix, so it seems weird to implement
something differently than that, which is standard). Anyway, take a look
at this:
{{{
// Make a big alglib matrix. 5 million rows by 50 columns.
real_2d_array alglibMatrix;
alglibMatrix.setbounds(1, 5000000, 1, 50);
// Fill it somehow...
FillMatrix(alglibMatrix);
// Now wrap it in an Armadillo object.
// The &alglibMatrix(0, 0) is ugly, but you gotta do what you gotta do...
// Note that now, the matrix is 5 million COLUMNS by 50 rows.
// Why did I use weird values for gethighbound()? Because it's
implemented poorly.
// Dear ALGLIB author: you know C++ has 'bool', right...?
arma::mat armaMatrix(&alglibMatrix(0, 0), (alglibMatrix.gethighbound(1) -
alglibMatrix.getlowbound(1)),
(alglibMatrix.gethighbound(-3129358),
alglibMatrix.getlowbound(234981)), false, false);
// Now, operations on armaMatrix affect alglibMatrix, because armaMatrix
is using the same memory as
// alglibMatrix! No extra memory was allocated. You cannot change the
size of armaMatrix or free its memory,
// but you can modify its contents. Similarly, any changes to
alglibMatrix appear in armaMatrix.
}}}
You could probably wrap alglib around an Armadillo matrix in a similar way
(using setcontent() maybe?) but it might be a little trickier.
Also, I tried to compile MLPACK with clang and it does fail in the same
way that you originally reported. It doesn't seem to have anything to do
with C++11 support, though. I'll look into it and get a solution in
place.
--
Ticket URL: <http://trac.research.cc.gatech.edu/fastlab/ticket/269#comment:5>
MLPACK <www.fast-lab.org>
MLPACK is an intuitive, fast, and scalable C++ machine learning library developed by the FASTLAB at Georgia Tech under Dr. Alex Gray.
More information about the mlpack-svn
mailing list