A Unifying Framework for Parallel and Distributed Processing in R using Futures

Abstract:

A future is a programming construct designed for concurrent and asynchronous evaluation of code, making it particularly useful for parallel processing. The future package implements the Future API for programming with futures in R. This minimal API provides sufficient constructs for implementing parallel versions of well-established, high-level map-reduce APIs. The future ecosystem supports exception handling, output and condition relaying, parallel random number generation, and automatic identification of globals lowering the threshold to parallelize code. The Future API bridges parallel frontends with parallel backends, following the philosophy that end-users are the ones who choose the parallel backend while the developer focuses on what to parallelize. A variety of backends exist, and third-party contributions meeting the specifications, which ensure that the same code works on all backends, are automatically supported. The future framework solves several problems not addressed by other parallel frameworks in R.

Cite PDF Tweet

Author

Affiliation

Henrik Bengtsson

 

Published

Nov. 9, 2021

Received

Oct 30, 2020

DOI

10.32614/RJ-2021-048

Volume

Pages

13/2

273 - 291

CRAN packages used

sparklyr, future, foreach, multicore, snow, doMC, doParallel, doMPI, doRedis, progressr, globals, codetools, future.apply, furrr, promises, listenv, future.callr, callr, future.batchtools, batchtools, googleComputeEngineR, parallelly, digest, future.tests, caret, glmnet, NMF, plyr, TSP, doFuture, DBI, xml2, stan, data.table, microbenchmark, bench, proffer, profvis, future.BatchJobs, BatchJobs, purrr, targets, drake, shiny, plumber, civis

CRAN Task Views implied by cited packages

HighPerformanceComputing, WebTechnologies, Databases, MachineLearning, ModelDeployment, ReproducibleResearch, Finance, Multivariate, Optimization, Survival, TeachingStatistics, TimeSeries

Bioconductor packages used

BiocParallel

Footnotes

    Reuse

    Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".

    Citation

    For attribution, please cite this work as

    Bengtsson, "The R Journal: A Unifying Framework for Parallel and Distributed Processing in R using Futures", The R Journal, 2021

    BibTeX citation

    @article{RJ-2021-048,
      author = {Bengtsson, Henrik},
      title = {The R Journal: A Unifying Framework for Parallel and Distributed Processing in R using Futures},
      journal = {The R Journal},
      year = {2021},
      note = {https://doi.org/10.32614/RJ-2021-048},
      doi = {10.32614/RJ-2021-048},
      volume = {13},
      issue = {2},
      issn = {2073-4859},
      pages = {273-291}
    }