1
我是一个用R并行计算的初学者。我最近开始使用使用doParallel包的foreach和并行计算。当我试图在将迭代器拆分为块时将列表编入索引时,我遇到了一个问题。isplitVector和foreach索引问题
library(itertools)
library(foreach)
library(doParallel)
n=10000
iter = 1:n
cores = detectCores() -1
c = makeCluster(cores)
clusterExport(c,c("mod_function","test_list","cores")
registerDoParallel(c)
output <- foreach(i = isplitVector(iter,chunks = cores)) %dopar%
{
mod_function(test_list[[i]]
}
stopCluster(c)
我得到的错误
Error in { : task 1 failed - "recursive indexing failed at level 3
当我不迭代向量分割成块我没有得到这个错误。我不确定isplitVector返回的是什么,以及如何为列表建立索引。这对我的作品
n=10000
iter = 1:n
cores = detectCores() -1
c = makeCluster(cores)
registerDoParallel(c)
output <- foreach(i = (1:n) %dopar%
{
mod_function(test_list[[i]]
}
stopCluster(c)
因为我有很多的迭代,我想加快我的foreach是块迭代到集群的最佳途径。在这方面的任何帮助将是非常有帮助的。提前致谢。
谢谢伊莫,我已经添加了我使用过的包和我导出的变量。 –