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

Simon Urbanek simon.urbanek at r-project.org
Sun Nov 23 02:43:49 CET 2014


On Nov 22, 2014, at 1:27 PM, Braun, Michael <braunm at mail.smu.edu> wrote:

> Thank you for all of the helpful replies.  I think I’ll go back to using the CRAN binary, and still link to an external BLAS.
> 
> I do have some follow-up questions:
> 
> 1.  Section 10.5 of the R for Mac FAQ suggests that there is a libRblas.veclib.dylib in the Resources/lib directory.  I do not see that after installing the binary for R 3.1.2.  I can still link to the Apple vecLib (/System/Library/Accelerate …./libBLAS.dylib --  it’s a very long path), but there appears to be an inconsistency between the CRAN build and the FAQ.
> 

Thanks, I'll look into it, it should be there at least for the SL build.


> 2.  Simon mentioned Intel OpenMP runtime, and enabling R threading support.  Is this something that can be done at the user level (like pointing to a different BLAS), or is it something that needs to be built in to the binary?
> 

Unfortunately not, because GOMP has both performance and stability issues on OS X, so the CRAN binaries are explicitly build with disabled OpenMP support to work around that. However, as I said, we hope to have iomp binaries soon (perhaps even as soon as next week).


> 3.  Just out of curiosity, what are the operations that slow down with AVX?  Someday, when I have some free time, I may want to check that out, mainly as a learning experience.
> 

I would have to dig out the benchmarks, but if I recall correctly there was a set of BLAS kernels that doubled the runtime with AVX enabled. There were other instances, too, but I can't recall the details. In a spare minute I can try to replicate the experiment.

Cheers,
Simon


> 
> On Nov 22, 2014, at 9:57 AM, Rainer M Krug <Rainer at krugs.de<mailto:Rainer at krugs.de>> wrote:
> 
> Simon Urbanek <simon.urbanek at r-project.org<mailto:simon.urbanek at r-project.org>> writes:
> 
> On Nov 21, 2014, at 3:47 AM, Rainer M Krug <Rainer at krugs.de<mailto:Rainer at krugs.de>> wrote:
> 
> Simon Urbanek <simon.urbanek at r-project.org<mailto:simon.urbanek at r-project.org>> writes:
> 
> On Nov 20, 2014, at 11:17 AM, Braun, Michael <braunm at mail.smu.edu<mailto: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.
> 
> Well - I am using R via ESS and nearly never the GUI, so I can't say
> anything from that side, but I never had crashes of R after switching to
> homebrew - but I might be lucky.
> 
> 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.
> 
> As I said - I am coming from the Linux side of things (but always used
> the binaries there...) so I don't mind compiling and prefer the better
> control / understanding homebrew gives me. And my hands never got as
> dirty as trying to compile under Linux :-)
> 
> Cheers,
> 
> Rainer
> 
> 
> 
> 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<mailto: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
> 
> --
> Rainer M. Krug
> email: Rainer<at>krugs<dot>de
> PGP: 0x0F52F982
> 
> --------------------------------------------
> Michael Braun, Ph.D.
> Associate Professor of Marketing
> Cox School of Business
> Southern Methodist University
> braunm at smu.edu<mailto:braunm at smu.edu>
> 
> 
> 
> 	[[alternative HTML version deleted]]
> 
> _______________________________________________
> R-SIG-Mac mailing list
> R-SIG-Mac at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac



More information about the R-SIG-Mac mailing list