在R中使用雪进行并行处理

预报员

我有1000个列表,每个列表都有多个时间序列。我想将预测应用于列表中的每个元素。这已经成为计算资源方面的棘手问题。我在并行计算或高级R编程中没有背景知识。任何帮助将不胜感激。

我已经创建了虚拟列表。基本上,dat.list与我正在处理的类似。

library("snow")
library("plyr")
library("forecast")

    ## Create Dummy Data

    z <- ts(matrix(rnorm(30,10,10), 100, 3), start = c(1961, 1), frequency = 12)
    lam <- 0.8
    ap <- list(z=z,lam=lam)

## forecast using lapply

    z <- ts(matrix(rnorm(30,10,10), 100, 3), start = c(1971, 1), frequency = 12)
    lam <- 0.5
    zp <- list(z=z,lam=lam)

    dat.list <- list(ap=ap,zp=zp)

    xa <- proc.time()
    tt <- lapply(dat.list,function(x) lapply(x$z,function(y) (forecast::ets(y))))
    xb <- proc.time()

上面的代码给了我我所需要的。我想对以上代码中的lapply都应用并行处理。因此,我尝试使用了snow软件包和此站点中显示的示例

  ## Parallel Processing


    clus <- makeCluster(3)
    custom.function <- function(x) lapply(x$z,function(y) (forecast::ets(y)))
    clusterExport(clus,"custom.function")

    x1 <- proc.time()
    tm <- parLapply(clus,dat.list,custom.function)
    x2<-proc.time()

    stopCluster(clus)

以下是我的问题,

  1. 由于某种原因,对于非并行版本,tm的输出是不同的。预测功能集将应用于每个单个数据点,而不是列表中的元素。

不平行:

summary(tt)
   Length Class  Mode
ap 3      -none- list
zp 3      -none- list

并行版本:

    summary(tm)
       Length Class  Mode
    ap 300    -none- list
    zp 300    -none- list
  1. 我的第二个问题是我应该如何在自定义函数(基本上是嵌套的parLapply)中并行化lapply

    custom.function <-function(x)parLapply(clus,x $ z,function(y)(forecast :: ets(y)))##不起作用

非常感谢您的帮助

史蒂夫·韦斯顿

问题在于该forecast程序包未加载到群集工作器上,这会导致错误lapply地遍历ts对象。您可以forecast使用clusterEvalQ以下方法加载工作人员

clusterEvalQ(clus, library(forecast))

为了回答您的第二个问题,您尝试嵌套嵌套的方式失败了,因为工作人员尚未snow加载或clus定义。但是,如果您有1000个列表,则应该有很多方法可以使所有内核保持繁忙,而不必担心嵌套并行性。您更有可能损害自己的表现而不是有所帮助,而且这似乎没有必要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java中使用线程进行并行处理

来自分类Dev

在python中使用Pygame进行并行处理

来自分类Dev

在Java中使用线程进行并行处理

来自分类Dev

在 Julia 中使用 DataFrames 进行并行处理

来自分类Dev

使用“并行”包在R中进行并行处理

来自分类Dev

在R中使用foreach进行并行提升

来自分类Dev

在R中使用foreach进行并行升压

来自分类Dev

在Julia中使用@sync @async进行并行处理

来自分类Dev

使用xargs进行并行处理

来自分类Dev

使用 mclapply 在 R 中进行并行处理:函数不起作用

来自分类Dev

R:使用doParallel并行处理几行

来自分类Dev

使用 R 并行处理 XML 节点

来自分类Dev

如何在Python中使用多重处理并行求和循环

来自分类Dev

如何在Java中使用Spliterators测试并行处理的性能

来自分类Dev

在python中使用多重处理实现平凡的并行性

来自分类Dev

使用MP Connect进行SAS并行处理入门

来自分类Dev

使用Task并行库进行I / O绑定处理

来自分类Dev

在Python中使用多个Darknet模型进行并行GPU执行

来自分类Dev

在C中使用OpenMP进行循环并行化的线程数

来自分类Dev

在 C++ 中使用线程进行并行计算

来自分类Dev

在PHP中使用pthread进行后台处理

来自分类Dev

在iOS中使用openCV进行图像处理

来自分类Dev

在Android中使用ListView进行处理

来自分类Dev

如何在R中使用Tabyl对4个变量进行交叉表处理

来自分类Dev

并行运行python进程(使用“多处理池”)进行批处理

来自分类Dev

如何在R并行计算中使用Reduce()函数?

来自分类Dev

如何在R并行计算中使用Reduce()函数?

来自分类Dev

解决在 R 中使用 OpenMP 时的封闭并行错误

来自分类Dev

选择Akka还是Spark进行并行处理?

Related 相关文章

热门标签

归档