使用降雪包并行化 R 代码

Posted

技术标签:

【中文标题】使用降雪包并行化 R 代码【英文标题】:Parallelize R code using snowfall package 【发布时间】:2020-10-02 16:12:30 【问题描述】:

我正在尝试并行运行我的 R 代码。以下是 myfunc 函数返回数字的玩具示例。

library(snowfall); 
sfInit(parallel=TRUE,cpus=5)
a <- 1 : 10000
sfExport("a")
parwrapper <- function(i)
        mysimulation <- myfunc(b=30,c=a[i])
        return(mysimulation)
sfapply(1:10000,parwrapper)

这是我得到的错误。 checkForRemoteErrors(val) 中的错误: 5个节点产生错误;第一个错误:找不到函数“myfunc”

【问题讨论】:

【参考方案1】:

欢迎来到 SO。

错误清楚地说明了问题。 parwrapper 调用函数 myfunc。此函数未定义。此外,您可能需要导出对象sfExport('myfunc', 'parwrapper')

【讨论】:

谢谢。实际上,myfunc 是其中一个 R 包中的一个函数。 很公平。它不是snowfall 库的一部分,因此从示例中不清楚。在这种情况下,您必须使用sfLibrary([package name]) 才能导出包含包的库。或者,foreach 包、future 包和 parallel 包可能更擅长自动获取依赖项。 以下是错误:sfLibrary("rpact") sfLibrary("rpact") 中的错误:停止:slave(s) 上的错误加载库:"rpact" 现在这是我的不足之处。从错误中听起来rpact 没有安装。您可以使用sfClusterEval("rpact" %in% rownames(installed.packages())) 检查每个从节点是否安装了它,如果安装了包,则应该为每个节点返回TRUE 是的,它为每个节点返回 TRUE。有没有办法让它工作?

以上是关于使用降雪包并行化 R 代码的主要内容,如果未能解决你的问题,请参考以下文章

如何并行化 R 中包的函数

如何在Windows上进行并行化 - 例如?

R 降雪:并行应用于表格列

在 AWS 中使用雪(和降雪)在 R 中进行并行处理

在一组不同的解释变量上并行化 R 中的面板 logit 计算

为啥随机森林并行化后重要性会受到影响?