Skip to contents

The Futureverse is a unifying framework for parallelization and distributed processing in R. This package, futureverse, is a utility wrapper package that makes it easy to install most common Futureverse packages in one go.

TL;DR

Start by configuring Futureverse to parallelize on the current computer:

future::plan(future::multisession)

After this, all it takes is a minor tweak to make your existing lapply(), map(), or foreach() code to run in parallel, e.g.

library(futurize)

## Sequential and parallel version of base R apply
y <- lapply(X, slow_fcn)
y <- lapply(X, slow_fcn) |> futurize()

## Sequential and parallel version of purrr map
library(purrr)
y <- X |> map(slow_fcn)
y <- X |> map(slow_fcn) |> futurize()

## Sequential and parallel version of foreach
library(foreach)
y <- foreach(x = X) %do% slow_fcn(x)
y <- foreach(x = X) %do% slow_fcn(x) |> futurize()

To get progress updates, add a |> progressify(), e.g.

library(progressify)

y <- lapply(X, slow_fcn) |> progressify() |> futurize()
y <- X |> map(slow_fcn) |> progressify() |> futurize()
y <- foreach(x = X) %do% slow_fcn(x) |> progressify() |> futurize()

Installation

Call:

install.packages("futureverse")

to install the two main go-to packages:

  • futurize - parallelize common map-reduce and domain-specific function calls
  • progressify - report on progress for common map-reduce and domain-specific function

together with support packages:

  • future - the core Futureverse package
  • progressr - Near-live progress updates when using Futureverse
  • future.apply - Futureverse variants of base-R apply functions
  • furrr - Futureverse variants of purrr apply functions
  • doFuture - Futureverse adaptors for the foreach package

Call:

install.packages("futureverse", dependencies = TRUE)

to install also additional parallel backends: