> 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! _______________________________________________ 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