RcppParallel provides a complete toolkit for creating safe, portable, high-performance parallel algorithms

RcppParallel provides a complete toolkit for creating safe, portable, high-performance parallel algorithms

RcppParallel provides a complete toolkit for creating safe, portable, high-performance parallel algorithms

August 31, 2016

Modern computers and processors provide many advanced facilities for the concurrent, or parallel, execution of code. While R is a fundamentally a single-threaded program, it can call into multi-threading code, provided that such code interacts with R in a thread-safe manner. However, writing concurrent programs that run both safely and correctly is a very difficult task, and requires substantial expertise when working with the primitives provided by most programming languages or libraries.

RcppParallel provides a complete toolkit for creating safe, portable, high-performance parallel algorithms, built on top of the Intel “Threading Building Blocks” (TBB) and “TinyThread” libraries. In particular, RcppParallel provides two high-level operations — ‘parallelFor’, and ‘parallelReduce’, which provide a framework for the safe, performant implementation of many kinds of parallel algorithms. In this talk we’ll showcase how RcppParallel might be used to implement a parallel algorithm, and how the generated routine could be used in an R package.

Download Materials

About the speaker

Kevin is a software engineer on the RStudio IDE team. He is an active member of the R community, member of the Rcpp core team, and has contributed to a wide variety of packages in the R ecosystem. He is the maintainer of the popular reticulate, renv, packrat, and RcppParallel R packages.