Book Image

Mastering Parallel Programming with R

By : Simon R. Chapple, Terence Sloan, Thorsten Forster, Eilidh Troup
Book Image

Mastering Parallel Programming with R

By: Simon R. Chapple, Terence Sloan, Thorsten Forster, Eilidh Troup

Overview of this book

R is one of the most popular programming languages used in data science. Applying R to big data and complex analytic tasks requires the harnessing of scalable compute resources. Mastering Parallel Programming with R presents a comprehensive and practical treatise on how to build highly scalable and efficient algorithms in R. It will teach you a variety of parallelization techniques, from simple use of R’s built-in parallel package versions of lapply(), to high-level AWS cloud-based Hadoop and Apache Spark frameworks. It will also teach you low level scalable parallel programming using RMPI and pbdMPI for message passing, applicable to clusters and supercomputers, and how to exploit thousand-fold simple processor GPUs through ROpenCL. By the end of the book, you will understand the factors that influence parallel efficiency, including assessing code performance and implementing load balancing; pitfalls to avoid, including deadlock and numerical instability issues; how to structure your code and data for the most appropriate type of parallelism for your problem domain; and how to extract the maximum performance from your R code running on a variety of computer systems.
Table of Contents (13 chapters)

The ROpenCL package


The ROpenCL package developed by Willem Ligtenberg together with this book's author, is essentially a collection of limited-scope R convenience functions that wrap the OpenCL C API and simplify many aspects of its complexity. ROpenCL wrappers are implemented in C++ and are dependent on the Rcpp package, which is available from the CRAN package repository. ROpenCL is not yet part of CRAN (though this may change by the time this book is published) and must be installed from source. You can do this directly from within your R session, as follows:

> install.packages("ROpenCL", type="source",
                    repos="http://repos.openanalytics.eu")

The ROpenCL programming model

The ROpenCL API functions we will make use of in this chapter, their supporting concepts, and how they will be used, are summarized in the following table and presented in the sequence order in which they would normally be expected to be called in a typical OpenCL program—the numbered sequence of...