当我试图在R中运行下面的代码时,需要很长时间才能执行。因此,我想检查一下是否可以使用并行编程来运行这个程序。我在网上看到,人们会首先将任务转换为函数。但不太确定我该怎么做。
holder = matrix(0, 1000, 20)
for (x in 1:1000) {
end = x + 99
thedata = dataindataframe[x:end,]
for (y in 1:20) {
m = garchFit(~garch(1,1), data = thedata[,y], trace = FALSE)
holder [x,y] = predict(m, 1)[,3]
}
}
holder
如果您能够帮助编写并行编程的代码,那将是非常棒的。谢谢!
发布于 2022-02-23 06:19:26
这是一个非常简单的并行化场景。
如果没有可复制示例,我无法保证这将工作。但是,这就是我的方法,也就是并行化最外层的循环。
library(doParallel)
library(foreach)
library(fGarch)
registerDoParallel(parallel::detectCores()-2) #Or set this to whatever is reasonable for your computer/server
holder <- foreach(x=1:1000, .combine = "rbind", .packages='fGarch') %dopar% {
end = x + 99
thedata = dataindataframe[x:end,]
pred <- numeric(20L)
for (y in 1:20) {
m = garchFit(~garch(1,1), data = thedata[,y], trace = FALSE)
pred[y] = predict(m, 1)[,3]
}
return(pred)
}
其他一些资源:
https://stackoverflow.com/questions/71238219
复制相似问题