Comment: I'll focuses on the first two in this talk.
Friedman & Wise (1976, 1977), Hibbard (1976), Baker & Hewitt (1977)
v <- expr
f <- future(expr) v <- value(f)
v %<-% expr
╔════════════════════════════════════════════════════════╗ ║ < Future API > ║ ║ ║ ║ future(), value(), %<-%, ... ║ ╠════════════════════════════════════════════════════════╣ ║ future ║ ╠════════════════════════════════╦═══════════╦═══════════╣ ║ parallel ║ globals ║ (listenv) ║ ╠══════════╦══════════╦══════════╬═══════════╬═══════════╝ ║ snow ║ Rmpi ║ nws ║ codetools ║ ╚══════════╩══════════╩══════════╩═══════════╝
╔═══════════════════════════════════════════════════╗ ║ < Future API > ║ ╠═══════════════════════════════════════════════════╣ ║ future <-> future.batchtools ║ ╠═════════════════════════╦═════════════════════════╣ ║ parallel ║ batchtools ║ ╚═════════════════════════╬═════════════════════════╣ ║ SGE, Slurm, TORQUE, ... ║ ╚═════════════════════════╝
Comment: The use of `listenv` is non-critical and only needed for implicit futures when assigning them by index (instead of by name).
╔═══════════════════════════════════════════════════════════╗ ║ future_lapply(), future_vapply(), future_replicate(), ... ║ ╠═══════════════════════════════════════════════════════════╣ ║ < Future API > ║ ╠═══════════════════════════════════════════════════════════╣ ║ "wherever" ║ ╚═══════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════╗ ║ foreach API ║ ╠════════════╦══════╦════════╦═══════╦══════════════════╣ ║ doParallel ║ doMC ║ doSNOW ║ doMPI ║ doFuture ║ ╠════════════╩══╦═══╩════════╬═══════╬══════════════════╣ ║ parallel ║ snow ║ Rmpi ║ < Future API > ║ ╚═══════════════╩════════════╩═══════╬══════════════════╣ ║ "wherever" ║ ╚══════════════════╝
┌───────────────────────────────────────────────────────┐ │ │ │ caret, gam, glmnet, plyr, ... (1,200 pkgs) │ │ │ ╠═══════════════════════════════════════════════════════╣ ║ foreach API ║ ╠══════╦════════════╦════════╦═══════╦══════════════════╣ ║ doMC ║ doParallel ║ doSNOW ║ doMPI ║ doFuture ║ ╠══════╩════════╦═══╩════════╬═══════╬══════════════════╣ ║ parallel ║ snow ║ Rmpi ║ < Future API > ║ ╚═══════════════╩════════════╩═══════╬══════════════════╣ ║ "wherever" ║ ╚══════════════════╝
Comment: ... so, the above works.
Comment: Interesting research project to automate via code inspection.
Comment: This approach not do load balancing. I have a few ideas how support for this may be implemented in future framework, which would be beneficial here and elsewhere.
Risk for bloating the Future API: Which need to be included? Don't want to reinvent the HPC scheduler and Spark.