[Rcpp-devel] Sparse matrix operations

Dirk Eddelbuettel edd at debian.org
Tue Feb 4 03:22:11 CET 2014


On 3 February 2014 at 18:09, Yixuan Qiu wrote:
| A pretty nice feature of Eigen is that it allows you to map an existing memory
| address to an Eigen object, so the data stored in R can be directly reused by
| Eigen. This may be the key point if we want to avoid copying data from R to
| Eigen/Armadillo. Dirk, does Armadillo has such kind of constructor to receive a
| pointer as input to initialize a vector or matrix?

Yes, and we've been using it for years. And documented it as such.  For
details, see Conrad's docs, eg http://arma.sourceforge.net/docs.html#Mat and
look at 'Advanced Constructors'.
 
| Currently RcppEigen supports direct conversion from dgCMatrix, the
| column-oriented sparse matrix class in the Matrix package. After you finish the
| conversion, you can make use of all the fancy stuffs on sparse matrices
| provided by Eigen, including basic arithmetic operations, linear algebra
| solvers and matrix factorizations. It really helped me a lot when developing
| rARPACK. Thank you Doug and Dirk. :-)

Thank you for rARPACK! 

I'll need to talk to you once Conrad exposes more code and we need eigs etc.
We can possibly deploy that in RcppArmadillo.  Maybe we'll need to factor out
the basic ARPACK parts to be used by rARPACK and us.  Or some other scheme.
Suggestions welcome :)

Cheers, Dirk


| Best,
| Yixuan
| 
| 
| 
| 2014-02-03 Dirk Eddelbuettel <edd at debian.org>:
| 
| 
|     On 3 February 2014 at 12:59, Douglas Bates wrote:
|     | On Mon, Feb 3, 2014 at 11:48 AM, Dirk Eddelbuettel <edd at debian.org>
|     wrote:
|     |
|     |
|     |     On 3 February 2014 at 10:23, French, Joshua wrote:
|     |     | Soren and Doug,
|     |     |
|     |     | Thanks for the info about the sparse matrices.  I'll give it a
|     go and
|     |     seen what
|     |     | happens.  If it works out, then perhaps I'll be able to provide
|     a nice
|     |     | RcppGallery example.
|     |
|     |     Yes -- there isn't much yet in RcppArmadillo but this is expected
|     to
|     |     grow. And CRAN now has rARPACK so we get cheaply to the object code
|     too.
|     |
|     |     One last comment I should have made earlier: "dense" data from R
|     comes over
|     |     cheaply as a SEXP; "sparse" will always require a copy.  Keep that
|     in
|     |     mind,
|     |     and on the margin don't believe anything any of us say but keep
|     profiling
|     |     and
|     |     measuring :)
|     |
|     |
|     | Not really.  RcppEigen offers conversion of SEXPs to Eigen::SparseMatrix
|     and
|     | Eigen::MappedSparseMatrix types.  The second uses the storage from R
|     without
|     | copying and hence should generally be declared with the const modifier.
| 
|     Oooops. My bad.
| 
|     I guess I generalized from my less performing converters contributed to
|     RcppArmadillo. Time permitting, maybe I should have another look at
|     RcppEigen
|     and see if I can do better for RcppArmadillo.
| 
|     | I think that wonderful vignetter by Bates and Eddelbuettel describes this
|     :-)
| 
|     :-)
| 
|     Dirk
| 
|     --
|     Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
|     _______________________________________________
|     Rcpp-devel mailing list
|     Rcpp-devel at lists.r-forge.r-project.org
|     https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
| 
| 
| 
| 
| --
| Yixuan Qiu <yixuan.qiu at cos.name>
| Department of Statistics,
| Purdue University

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list