[Rcpp-devel] R/Rcpp/RcppEigen Optimization WAS: NumericVector Double mismatch when indexing an array
Douglas Bates
bates at stat.wisc.edu
Wed Oct 24 18:24:18 CEST 2012
On Tue, Oct 23, 2012 at 6:01 PM, Darren Cook <darren at dcook.org> wrote:
>> 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
>
> Wow, those are huge differences. Am I misreading, or does that say
> RcppEigen runs *seven* times quicker with the -march=amdfam10 option?
>
> Can that be explained? (e.g. does the AMDFAM10 processor have some
> feature that speeds it up 7 times in ideal conditions?)
Eigen does use SSE2 and SSE3 pipelined instructions when they are
determined to be available.
More information about the Rcpp-devel
mailing list