On 09/25/2012 04:45 PM, Dirk Eddelbuettel wrote:

I use and recommend ~/.R/Makevars for that --- as setting certain values at
the package level is very verboten ("non portable code" and all that) as far
as CRAN is concerned.

Now, that's the "how do you" part.  As for "does it matter" that is a
different beast as -O2 (or better) is already the default for R on my systems
(running the vanilla Ubuntu packages based on my Debian packaging).

Dirk


Hi Dirk:

I hope this not too far off-topic.  I don't want to show my messy code,
but I learned a lot about optimization on my own system which I assume
would be useful to others.  I was comparing an MCMC sampler written in
R with a line for line translation via inline/RcppEigen.

So, getting back to this discussion...  "The way" to do this is to
optimize R from the get go and then Rcpp/RcppEigen/etc. inherit the
appropriate switches.  And, as Dirk said, the RPM of R in the repo does
have -O2 (and a bunch of other switches which I don't know anything
about).  However, I found that R in the repo was no faster than my
naive compilation of R from source which did not include -O2 (or any
other black magic).

What gives?  What I found that does speed up the code dramatically
is the -march switch.  I guess that can't be repo-ed because it is
CPU dependent, right?  Here's the important settings that I used to
compile R from source:

CC="gcc"
CFLAGS="-g -O2 -march=amdfam10"
CXX="g++"
CXXFLAGS="-g -O2 -march=amdfam10"

With these settings...

MCMC Code       Switches                Relative Time
R               none or -O2             1.0
RcppEigen       none or -O2             0.09
R               -O2 -march=amdfam10     0.5
RcppEigen       -O2 -march=amdfam10     0.013

--
Rodney Sparapani, PhD  Center for Patient Care and Outcomes Research
Sr. Biostatistician               http://www.mcw.edu/pcor
4 wheels good, 2 wheels better!   Medical College of Wisconsin (MCW)
WWLD?:  What Would Lombardi Do?   Milwaukee, WI, USA
_______________________________________________
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