作者celestialgod (天)
看板R_Language
标题Re: [问题] for 回圈的平行运算
时间Thu Oct 22 09:10:25 2015
snow跟parallel要你自己弄cluster去跑
snowfall提供相对简单的环境,可以尝试一下
library(snowfall)
library(parallel)
inputs <- 1:256
wn = seq(0.25,1,0.05)
wn1 = seq(0.3,1,0.05)
processInput <- function(v) {
sum(v)
}
inputs <- as.matrix(expand.grid(wn,wn1))
numCores <- detectCores()
sfInit(TRUE, numCores)
# sfExport("variableName") # you may need this
# shLibrary("packageName") # you may need this
sfApply(inputs,1, processInput)
sfStop()
※ 引述《tony255034 (5245566)》之铭言:
: [问题类型]:
: 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
: [软体熟悉度]:
: 新手(没写过程式,R 是我的第一次)
: [问题叙述]:
: 目前有一个数学模型,每次要跑20秒,惩罚系数大约为16*16种组合
: 想利用版上所说的RMPI来优化程式,但我是用双for回圈来代入惩罚系数的
: 目前是想平行运算各组合,将各组合结果储存到一个阵列,
: 再去找出最小的AIC
: [程式范例]:
: wn = seq(0.25,1,0.05)
: wn1 = seq(0.25,1,0.05)
: AIC0 = 10^6
: for(i in 1:length(wn)){
: for(j in 1:length(wn1)){
: list[AIC,BIC] = Model(wn[i],wn1[j]);
: if(AIC < AIC0){
: finalAIC = AIC
: finalBIC = BIC
: }
: }
: }
: [环境叙述]:
: Win7 32bit R3.2.2
: [关键字]:
: Parallel Computing、RMPI
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.109.73.190
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1445476229.A.C5A.html
1F:推 tony255034: 感谢 有成功了 但想请教有外部算好的变数要代入 10/22 19:58
2F:→ tony255034: function 里面要怎麽取得 例如y=10但不再function中 10/22 19:59
sfExport 我特意留在上面的XDD
3F:推 tony255034: 抱歉 没看懂您的意思 感谢 我试成功了 获益良多 ORZ 10/22 23:31
4F:推 tony255034: 想请教要如何挑选numCores? 平行後单次执行时间变长 10/24 00:05
5F:→ tony255034: 总时间确实有缩短 但以numCores=4 总时间仅缩小了2倍 10/24 00:06
6F:→ tony255034: 单次时间增为2倍 执行次数减为1/4倍 总时间减为0.5倍 10/24 00:08
平行本来就不会缩短非常多 还要考虑到记忆体复制的问题
建议你把程式po上来看,怎样改进比较快
※ 编辑: celestialgod (180.218.154.163), 10/24/2015 12:06:58