On Thursday of last week I gave a short informal talk to Stat Bytes, the CMU Statistics department‘s twice a month computing seminar.

**Quick tricks for faster R code: Profiling to Parallelism**

*Abstract:*

I will present a grab bag of tricks to speed up your R code. Topics will include: installing an optimized BLAS, how to profile your R code to find which parts are slow, replacing slow code with inline C/C++, and running code in parallel on multiple cores. My running example will be fitting a 2PL IRT model with a hand coded MCMC sampler. The idea is to start with naive, pedagogically clear code and end up with fast, production quality code.

The slides are here. Code is here.

This was an informal talk. If you would like to dig into these topics more, some more references:

- Any of Dirk Eddelbuettel‘s talks, especially:
- Introduction to High-Performance Computing with R (Essentially a three-hour version of the Stat Bytes talk, but done much better! FWIW I found it after I gave the talk…)
- Rcpp by Examples (More info about Rcpp)
- RcppArmadillo: Accelerating R with C++ Linear Algebra (More info about C++ matrix stuff)

- CRAN Task View: High-Performance and Parallel Computing with R
- This gives an up to date overview about all things HPC and R. Give it a read to figure out what is happening.
- Note that this CRAN view is curated by by Dr. Eddelbuettel.

Update: 6/25/2013 For the Windows users out there, Felix Reidel has some notes about upgrading your BLAS. It is easier than I thought!

Update: 7/9/2013 Felix pointed out that OpenBLAS is faster than ATLAS. He is right. See my new blog post for details and proof.

Regarding “Installing an optimized BLAS”:

1) you should point out that using OpenBLAS can significantly speed up operations on large matrices. In my experience ATLAS is not the fastest BLAS around.

2) Changing the BLAS DLL under Windows is trivial: you only have to replace the Rblas.dll with a different one.

Thanks Felix. I’ve added a note at the bottom of the post.

Felix, you are totally right about OpenBLAS. See the details in my new post.

Pingback: For faster R use OpenBLAS instead: better than ATLAS, trivial to switch to on Ubuntu | Nathan VanHoudnos