[Rcpp-devel] Beginner Question: Two misc. questions on usage of Rcpp
Christian Gunning
xian at unm.edu
Tue Feb 1 01:22:08 CET 2011
> 2. I have a MCMC simulation (say: foo) which uses several functions (say:
> fun1, fun2). These functions (fun1, fun2) are themselves computation
> intensive and I used Rcpp to speed them. Until now I do something like this:
>
> In R file:
>
> foo <- function (...){
>
> src1 <- paste(readLines("fun1-rcpp.cpp"), collapse="\n")
> RcppFun1 <- cxxfunction( .., plugin="Rcpp",body=src1)
>
> ## similar cpp code for fun2
>
> for (i in 1:10000){
> ## use RcppFun1, RcppFun2 here
> }
> }
For MCMC, independence of loop iterations argues for explicit
parallelism. Assuming you have several cores available, look at the
foreach package. If you have several *machines*, each with many cores
available, something like the snowfall package might make sense,
depending on communication costs.
http://cran.r-project.org/web/packages/multicore/index.html
http://cran.r-project.org/web/packages/foreach/index.html
It's "yet another new thing", but as Dirk said, creating a package
should help a lot for "real work". See ?Rcpp.package.skeleton to get
started, and the "Writing R Extensions" manual for details. Exactly
how to do this depends on OS (I don't know about windows shell), but
the overview is:
## 1. Start R in directory to contain myPackage and run the following
> Rcpp.package.skeleton("myPackage")
## 2. edit code in myPackage/R and myPackage/src directories
## 3. Run following commands from your OS shell,
## in the directory from step 1 (just above the package directory)
R CMD check myPackage ## Optional
R CMD INSTALL myPackage
## 4. Start R from any directory and do
> require(myPackage)
## 5. After editing code, you must exit R and repeat steps 3 and 4
## to reload your package.
best,
Christian
--
A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal – Panama!
More information about the Rcpp-devel
mailing list