Package 'future.mirai'

Title: A 'Future' API for Parallel Processing using 'mirai'
Description: Implementation of the 'Future' API <doi:10.32614/RJ-2021-048> on top of the 'mirai' package <doi:10.5281/zenodo.7912722>. This allows you to process futures, as defined by the 'future' package, in parallel out of the box, on your local machine or across remote machines. Contrary to back-ends relying on the 'parallel' package (e.g. 'multisession') and socket connections, 'mirai_cluster' and 'mirai_multisession', provided here, can run more than 125 parallel R processes.
Authors: Henrik Bengtsson [aut, cre, cph] , Charlie Gao [ctb]
Maintainer: Henrik Bengtsson <[email protected]>
License: GPL (>= 3)
Version: 0.2.2
Built: 2024-12-01 08:09:56 UTC
Source: CRAN

Help Index


future.mirai: A Future API for Parallel Processing using 'mirai'

Description

The future.mirai package implements the Future API using the mirai package.

Author(s)

Maintainer: Henrik Bengtsson [email protected] (ORCID) [copyright holder]

Other contributors:

See Also

Useful links:

Examples

TRUE

Mirai-based cluster futures

Description

Mirai-based cluster futures

Usage

mirai_cluster(expr, substitute = TRUE, envir = parent.frame(), ...)

Arguments

expr

An R expression.

substitute

If TRUE, argument expr is substitute():ed, otherwise not.

envir

The environment from where global objects should be identified.

...

Additional named elements of the future.

Value

An object of class MiraiFuture.

Examples

mirai::daemons(parallelly::availableCores(), dispatcher = FALSE)
plan(mirai_cluster)

# A function that returns a future, note that N uses lexical scoping...
f <- function() future({4 * sum((runif(N) ^ 2 + runif(N) ^ 2) < 1) / N}, seed = TRUE)

# Run a simple sampling approximation of pi in parallel using  M * N points:
N <- 1e6  # samples per worker
M <- 10   # iterations
pi_est <- Reduce(sum, Map(value, replicate(M, f()))) / M
print(pi_est)

plan(sequential)
invisible(mirai::daemons(0)) ## Shut down mirai workers

Mirai-based localhost multisession futures

Description

Mirai-based localhost multisession futures

Usage

mirai_multisession(
  expr,
  substitute = TRUE,
  envir = parent.frame(),
  ...,
  workers = availableCores()
)

Arguments

expr

An R expression.

substitute

If TRUE, argument expr is substitute():ed, otherwise not.

envir

The environment from where global objects should be identified.

...

Additional named elements of the future.

workers

The number of parallel processes to use. If a function, it is called without arguments when the future is created and its value is used to configure the workers.

Value

An object of class MiraiFuture.

Examples

plan(mirai_multisession)

# A function that returns a future, note that N uses lexical scoping...
f <- function() future({4 * sum((runif(N) ^ 2 + runif(N) ^ 2) < 1) / N}, seed = TRUE)

# Run a simple sampling approximation of pi in parallel using  M * N points:
N <- 1e6  # samples per worker
M <- 10   # iterations
pi_est <- Reduce(sum, Map(value, replicate(M, f()))) / M
print(pi_est)

plan(sequential)
invisible(mirai::daemons(0)) ## Shut down mirai workers