English

FlashR: R-Programmed Parallel and Scalable Machine Learning using SSDs

Distributed, Parallel, and Cluster Computing 2017-05-22 v4

Abstract

R is one of the most popular programming languages for statistics and machine learning, but the R framework is relatively slow and unable to scale to large datasets. The general approach for speeding up an implementation in R is to implement the algorithms in C or FORTRAN and provide an R wrapper. FlashR takes a different approach: it executes R code in parallel and scales the code beyond memory capacity by utilizing solid-state drives (SSDs) automatically. It provides a small number of generalized operations (GenOps) upon which we reimplement a large number of matrix functions in the R base package. As such, FlashR parallelizes and scales existing R code with little/no modification. To reduce data movement between CPU and SSDs, FlashR evaluates matrix operations lazily, fuses operations at runtime, and uses cache-aware, two-level matrix partitioning. We evaluate FlashR on a variety of machine learning and statistics algorithms on inputs of up to four billion data points. FlashR out-of-core tracks closely the performance of FlashR in-memory. The R code for machine learning algorithms executed in FlashR outperforms the in-memory execution of H2O and Spark MLlib by a factor of 2-10 and outperforms Revolution R Open by more than an order of magnitude.

Keywords

Cite

@article{arxiv.1604.06414,
  title  = {FlashR: R-Programmed Parallel and Scalable Machine Learning using SSDs},
  author = {Da Zheng and Disa Mhembere and Joshua T. Vogelstein and Carey E. Priebe and Randal Burns},
  journal= {arXiv preprint arXiv:1604.06414},
  year   = {2017}
}
R2 v1 2026-06-22T13:38:00.102Z