Hi Simon,

Welcome to the list.

On 2 February 2013 at 14:47, Simon Zehnder wrote:
| Dear Rcpp-Devels,
| 
| this list was suggested to me by Dirk Eddelbüttel in regard to a question 
using C++ Extensions in relation with the Armadillo library. 
| 
| At first I have to make compliments to the developers of Rcpp/RcppArmadillo. 
Dirk, Francois, this is a marvelous work! As someone programming a lot in C++ 
and using R Extensions regularly, it is cleaning away all this cumbersome 
programming dirt connected to SEXPs. 

Thanks.
 
| There are still remaining questions for me, which can be surely answered by 
the subscribers to this list: 
| 
| 1. I saw the Rcpp.package.skeleton function and I ask myself, if a similar 
offer is made for RcppArmadillo for including automatically the Armadillo 
library in a package? 

Sure -- there is RcppArmadillo.package.skeleton() in the RcppArmadillo
package. Dito for RcppGSL and RcppEigen.
 
| 2. If I want to use Armadillo solely in the C++ files, not via inline 
functions as shown in the RcppArmadillo paper, should I use solely the Rcpp 
package? No, right? The RcppArmadillo package provides objects wrappers for 
Armadillo objects to be passed to R? 

If you want just C++ from R, use Rcpp.

If you want C++ and Armadillo from R, use RcppArmadillo. It depends on Rcpp
and brings it in.

Etc pp for other libraries. Rcpp and RcppArmadillo should provide the
scaffolding to build upon. 
 
| 3. My package is based on S4 classes and I saw the S4 class wrapping in the 
Rcpp package. I miss an example on this. Can you refer to any document or 
website for this issue? 

Look at the Rcpp documentation, including the recently introduced Rcpp
Gallery at http://gallery.rcpp.org for some examples.  I don't use S4 all
that much so I do not write many examples, but eg in RcppEigen context a few
more are found (as some of that work was motivated bty sparse matrices which
already have an S4 representation in R).

| 4. Further: What is your experience regarding performance with S4 classes and 
OOP in C++: Does it make a difference mapping the S4 class to a struct in C++ 
or using directly the attributes of the S4 class (like vectors, etc.) as 
Armadillo vectors etc. in C++?
| As I work a lot on the HPC in Aachen/Germany together with some of the 
contributors to the OpenMP API, I am highly influenced by the parsimonious 
approach, i.e. use only basic objects in C++ to get high performance (although 
I know, that one of the main work now in the OpenMP API is the extension to 
complex/user-defined objects inside the #pragmas). 

As I said, I do not use S4 all that much. But I am in favour of OOP :)
 
| 5. Using OpenMP with RcppArmadillo: Up to now I used almost exclusively the 
Scythe Statistical Library (http://scythe.wustl.edu), which is pretty fast. I 
encountered lately problems with it, using parallel computing (OpenMP). Also 
important in this regard is the possibility to apply a 'first-touch-principle' 
where all my approaches failed in Scythe, due to the object structure. 
| Now, I would like to use RccpArmadillo with OpenMP and 
|               a) I want to get best performance: how would I proceed?

Just do it. We have OpenMP examples in the Rcpp docs. Ensure you have locks
from R, do not call back, and it tends to just work to be "multithreaded in
chunks" at the C++ level..

Scythe was very important and a first C++ library for R when it came out. I
could imagine that Armadillo is faster, but I have not seen comparisons.
        
|               b) I want to apply the 'first-touch-principle': where do I 
apply it? What is the internal data structure in Rcpp-/RcppArmadillo-Objects 
that allocates the memory?

It's whatever you would do with native R objects at the C level, only easier :)
 
| I am very excited now to start work with the Rcpp/RcppArmadillo package in my 
own one, which is at least planned to be pushed to CRAN one day. 

We look forward to your contributions.  These are open projects, so if you
can think of patches to code or documentation, please let us know.
 
| I am looking forward to your answers

Hope this helps.

Dirk

| 
| Best
| 
| Simon 
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel@lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

-- 
Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com  
_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to