[R-SIG-Mac] Compiler options for R binary

Simon Urbanek simon.urbanek at r-project.org
Fri Nov 21 17:15:57 CET 2014


On Nov 21, 2014, at 3:47 AM, Rainer M Krug <Rainer at krugs.de> wrote:
> 
> Simon Urbanek <simon.urbanek at r-project.org> writes:
> 
>> On Nov 20, 2014, at 11:17 AM, Braun, Michael <braunm at mail.smu.edu> wrote:
>> 
>>> I run R on a recent Mac Pro (Ivy Bridge architecture), and before
>>> that, on a 2010-version (Nehalem architecture).  For the last few
>>> years I have been installing R by compiling from source.  The reason
>>> is that I noticed in the etc/Makeconf file that the precompiled
>>> binary is compiled with the -mtune=core2 option.  I had thought that
>>> since my system uses a processor with a more recent architecture and
>>> instruction set, that I would be leaving performance on the table by
>>> using the binary.
>>> 
>>> My self-compiled R has worked well for me, for the most part. But
>>> sometimes little things pop-up, like difficulty using R Studio, an
>>> occasional permissions problem related to the Intel BLAS, etc.  And
>>> there is a time investment in installing R this way.  So even though
>>> I want to exploit as much of the computing power on my desktop that
>>> I can, now I am questioning whether self-compiling R is worth the
>>> effort.
>>> 
>>> My questions are these:
>>> 
>>> 1.  Am I correct that the R binary for Mac is tuned to Core2 architecture?  
>>> 2.  In theory, should tuning the compiler for Sandy Bridge (SSE4.2, AVX instructions, etc) generate a faster R?
>> 
>> In theory, yes, but often the inverse is true (in particular for AVX).
>> 
>> 
>>> 3.  Has anyone tested the theory in Item 2?
>>> 4.  Is the reason for setting -mtune=core2 to support older
>>> machines?  If so, are enough people still using pre-Nehalem 64-bit
>>> Macs to justify this?
>> 
>> Only partially. In fact, the flags are there explicitly to increase
>> the tuning level - the default is even lower. Last time I checked
>> there were no significant benefits in compiling with more aggressive
>> flags anyway. (If you want to go there, Jan De Leeuw used to publish
>> most aggressive flags possible). You cannot relax the math ops
>> compatibility which is the only piece that typically yields gain,
>> because you start getting wrong math op results. You have to be very
>> careful with benchmarking, because from experience optimizations often
>> yield speed ups in some areas, but also introduce slowdown in other
>> areas - it's not always a gain (one example on the extreme end is AVX:
>> when enabled some ops can even take twice as long, believe it or
>> not...) and even the gains are typically in single digi
>> t percent range.
>> 
>> 
>>> 5.  What would trigger a decision to start tuning the R binary for a more advanced processor?
>>> 6.  What are some other implications of either self-compiling or
>>> using the precompiled binary that I might need to consider?
>>> 
>> 
>> When you compile from sources, you're entirely on your own and you
>> have to take care of all dependencies (libraries) and compilation
>> yourself. Most Mac users don't want to go there since they typically
>> prefer to spend their time elsewhere ;).
> 
> I have to mention homebrew [1]here - by tuning the recipe used to install R,
> one could (I guess) tune compiler options and recompile without any
> fuss. The R installation with homebrew worked for me out-of-the-box and
> the re-compilation and installation is one command.
> 
> The recipes are simple ruby scripts and can easily be changed.
> 
> OK - I come from a Linux background, but I like the homebrew approach
> and it works flawless for me.
> 

As others have said - if you don't mind the crashes, then it's ok. I actually like homebrew, it's good for small tools when you're in the pinch, but it doesn't tend to work well for complex things like R (or package that has many options). Also like I said, you'll have to take care of packages and dependencies yourself - not impossible, but certainly extra work. However, if you don't mind to get your hands dirty, then I would recommend Homebrew over the alternatives.

Cheers,
Simon


 

> Cheers,
> 
> Rainer
> 
>> 
>> BTW: if you really care about speed, the real gains are with using
>> parallel BLAS, Intel OpenMP runtime and enabling built-in threading
>> support in R.
>> 
>> Cheers,
>> Simon
>> 
>> 
>>> tl;dr:  My Mac Pro has a Ivy Bridge processor.  Is it worthwhile to compile R myself, instead of using the binary?
>>> 
>>> Thanks,
>>> 
>>> Michael
>>> 
>>> 
>>> --------------------------
>>> Michael Braun
>>> Associate Professor of Marketing
>>> Cox School of Business
>>> Southern Methodist University
>>> Dallas, TX 75275
>>> braunm at smu.edu
>>> 
>>> _______________________________________________
>>> R-SIG-Mac mailing list
>>> R-SIG-Mac at r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>> 
> 
> 
> Footnotes: 
> [1]  http://brew.sh
> 
> -- 
> Rainer M. Krug
> email: Rainer<at>krugs<dot>de
> PGP: 0x0F52F982



More information about the R-SIG-Mac mailing list