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)

Summary


In this book, we covered many different aspects of parallelism, including R's built-in multicore capabilities with its parallel package, message passing using the MPI standard, and parallelism based on General Purpose GPU (GPGPU) with OpenCL. We also explored different framework approaches to parallelism from load balancing, through task farming to spatial processing with grid layout and more general purpose batch data processing in the cloud using Hadoop through the segue package as well as the hot new tech in cluster computing, Apache Spark, that is much better suited for real-time data processing at scale.

You should now have a broad coverage and understanding of these different approaches to parallelism, their particular suitability for different types of workload, how to deal with both balanced and unbalanced workloads to ensure maximum efficiency, and how to use the technologies that underpin them from R to exploit multiple cores on your PC/GPU using SPMD and SIMD vector processing...