[Rcpp-devel] Sparse matrix operations

Yixuan Qiu yixuan.qiu at cos.name
Tue Feb 4 00:09:21 CET 2014


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?

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. :-)



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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20140203/2cdf0b21/attachment.html>


More information about the Rcpp-devel mailing list