并行for循环R
Posted
技术标签:
【中文标题】并行for循环R【英文标题】:Parallel for loop R 【发布时间】:2013-12-12 22:21:54 【问题描述】:我在 for 循环中调用一个函数。
sample_fun <- function(x,y)
# do something with x,y and return value
My loop looks like
result = list()
for(i in 1:10000)
result[i] = sample_fun(i,i+1)
我如何并行化这个循环。使用 foreach 和 dopar 会给我下标错误。
【问题讨论】:
【参考方案1】:library(doSNOW)
sample_fun <- function(x,y)
# do something with x,y and return value
threads <- 8
N <- 10000
cl <- makeCluster(threads)
registerDoSNOW(cl)
result <- foreach(i=1:N) %dopar% sample_fun(i,i+1)
stopCluster(cl)
http://www.joyofdata.de/blog/parallel-computing-r-windows-using-dosnow-foreach/
【讨论】:
感谢喜悦。用户时间缩短 10%。您建议的任何更激进的方法。我正在尝试使用 igraph 包处理巨大的图形 查看链接。诀窍是适当地平衡传递给线程的每个处理块的大小。使用 8 个内核,我得到了高达 450% 的改进。还要在任务管理器中观察新创建的 R 会话会发生什么 - 它们的 CPU 和 RAM 使用情况。以上是关于并行for循环R的主要内容,如果未能解决你的问题,请参考以下文章