我如何设置循环,使我的电脑中的一个核心做一半,而另一半在R
我有我如何设置循环,使我的电脑中的一个核心做一半,而另一半在R,r,windows,parallel-processing,arima,R,Windows,Parallel Processing,Arima,我有Rscrip,它模拟ARIMA数据,并对相同的数据进行100次ARIMA顺序ARIMA(p,d,q)。我在系统CPU上有两个内核,如何才能发出R命令,让一个内核同时计算1到50,而第二个内核同时计算51到100,然后合并结果,以便 library(forecast) system.time({ for (i in 1:100) { a <- arima.sim(n = 50, model=list(ar = 0.8), sd = 1) b <- arimaor
R
scrip,它模拟ARIMA
数据,并对相同的数据进行100次ARIMA顺序ARIMA(p,d,q)
。我在系统CPU上有两个内核,如何才能发出R
命令,让一个内核同时计算1到50
,而第二个内核同时计算51到100
,然后合并结果,以便
library(forecast)
system.time({
for (i in 1:100) {
a <- arima.sim(n = 50, model=list(ar = 0.8), sd = 1)
b <- arimaorder(auto.arima(b, ic = "aicc"))
#print(b)
}
库(预测)
系统时间({
因为(我在1:100){
a我使用foreach
和doParallel
库将for循环划分为许多部分
我认为,由计算机来决定如何在可用的内核之间划分循环会更好
#…
library(parallel)
library(foreach)
library(doParallel)
#detectCores() ### Count number of cores available
numCores <- 2
registerDoParallel(numCores)
#for (i in 1:100) { ### Original For loop
foreach(i = 1:100) %dopar% { ### Replacement parallel foreach loop
#…
}
#…
#…
图书馆(平行)
图书馆(foreach)
图书馆(双平行)
#detectCores()###统计可用的磁芯数
numCores您可以使用parallel
,future
,callr
,以及其他几个用于协调不同进程的选项。还有。auto.arima()
函数不适用于此foreach
,即使在我加载foreach使用的预测包时也是如此(I=1:100,.packages=c(“预测”))%dopar%{
而不是您的答案中的foreach(i=1:100)%dopar%{
,它起作用了