如何解决如何设置循环,以使PC中的一个核心执行一半的工作,而另一半在R中执行
我有R
脚本,它模拟ARIMA
数据并为ARIMA order ARIMA(p,d,q)
检查相同的数据100次。我在系统CPU上有2个内核,如何给一个R
命令给一个内核以计算1 to 50
,而第二个内核同时计算51 to 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)
}
我正在使用Windows 10 64位
解决方法
我使用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
#…
}
#…
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。