我开发了一个包含embarassingly parallel函数的R包。
我想以对用户透明的方式实现这些功能的并行化,无论他/她的操作系统如何(至少理想情况下)。
我环顾四周看其他包裹作者如何导入foreach-based Parallelism。例如,Max Kuhn的caret
包导入foreach
以使用%dopar%
但relies用户指定并行后端。 (有几个示例使用doMC
,这在Windows上无效。)
注意doParallel适用于Windows和Linux / OSX并使用内置的parallel
包(请参阅注释here进行有用的讨论),导入{{}是否有意义只要用户指定doParallel
作为参数,我的函数就会调用registerDoParallel()
吗?
答案 0 :(得分:3)
作为未来套餐的作者,我建议你看一下。未来的软件包将所有并行/集群功能统一到一个API中。
https://cran.r-project.org/package=future
它的设计使您作为开发人员编写代码并且用户决定在后端,例如plan(multiprocess)
,plan(cluster, workers = c("n1", "n3", "remote.server.org"))
等。
如果用户可以访问具有常见调度程序(如Slurm,TORQUE / PBS和SGE)的HPC群集,那么他们可以使用future.BatchJobs包,该包在BatchJobs之上实现未来的API,例如: plan(batchjobs_slurm)
。您的代码保持不变。 (很快就会有批处理工具之上的future.batchtools包))。