Statistics 板


LINE

请问一下 再 linux 下有没有办法把 CPU 的多个核心分配给 R? 因为我的电脑有8核 可是每次都只有一个 core 跑 100% 是否有办法设定成多核运算? --------------------------------------- 我有查到一个 "multicore" 的 package 可是看起来好难... --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.239.247 ※ 编辑: gsuper 来自: 140.113.239.247 (06/16 15:27)
1F:推 Wush978:我之前是用Rmpi和snow来跑 06/16 18:56
2F:→ Wush978:请看 http://0rz.tw/ogr1b 06/16 18:57
本篇的 reference
3F:→ gsuper:太好了 sapply 可以这样做应该可以快超多的 谢谢 06/16 19:06
4F:→ gsuper:你说得"乱数相依"是指 seed default 一开始都相同 06/16 19:13
5F:→ gsuper:所以分配给4核的4次随机样本会完全相同的状况吗? 06/16 19:13
6F:推 Wush978:ya, 我记得平行运算在这方面是有问题的 06/16 19:49
7F:→ gsuper:OK~~~ 3Q 06/16 20:06
8F:→ clickhere:no,即便是用不同的seed,还是有乱数相依的问题. 06/16 21:27
9F:→ clickhere:除非是独立的模拟, 否则一般MCMC可能要用parallel的乱数 06/16 21:28
10F:→ clickhere:生成器 SPRNG. google: rsprng 06/16 21:29
11F:→ clickhere:Wush的网志写得很好. 可以改用lam/mpi效能会比mpich2好 06/16 21:31
12F:→ clickhere:很多, 但不确定有windows版. 06/16 21:31
13F:→ clickhere:mpi得注意资料在cpu间的传递,否则有可能会比开4个R慢的. 06/16 21:33
14F:→ clickhere:multicore用得是process的观念,就像是linux多工. 06/16 21:40
15F:→ clickhere:内部用fork产生子程序. windows版要自己编. 06/16 21:41
※ 编辑: gsuper 来自: 140.113.239.247 (06/16 23:21)
16F:→ gsuper:之後玩一玩再整理成笔记 06/17 13:35
笔记开始 ------------------------------------------------------------- 先安装 snow 与 Rmpi 在 ubontu 图形介面下 , 直接在 "管理" -> "Synnaptic 安装套件" 分别搜寻 r-cran-Rmpi r-cran-snow 进行安装 ------------------------------------------------------------ http://www.sfu.ca/~sblay/R/snow.html#clusterCall 这是一些 snow 的函式教学 很容易学 主要分成三个步骤 下面有操作简介 --------------------------------------------------- StepA cl <- makeCluster(4,type="MPI") 4为想要用的核的数目 type 有很多种 "SOCK","PVM","MPI","NWS" (有空再来学这些东西的意义) 一旦做了以下的指令 library(snow) cl <- makeCluster(4,type="MPI") 就可以在 top 看到 (linux 的工作管理员) R 变成 4 组 (平行CPU分配 , 连结成功) ------------------------------------------------- 再来是 StepB parApply (相同於 apply 的用法 , 但速度比 parCapply 和 parRapply 慢) parCapply (Column apply , 不需要下 MARGIN=2 的参数) parRapply ( Row apply , 不需要下 MARGIN=1 的参数) parSapply parLapply 这些升级过的函式 重点只有一个 就是在原本的应用方式上 加上一个 cl 变数 比方说 apply ( x,1,paste,collapse="") parApply (cl,x,1,paste,collapse="") parRapply(cl,x, paste,collapse="") ------------------------------------------------ StepC 最後一定要记得下一个指令 stopCluster(cl) 把多核的分配结束掉 (资源吃很大) 若 [R] 不正常中止 也需要去 top 自己把程序 kill 掉 不然会变成殭屍程式 ------------------------------------------------ 以下是我比较速度的程式 我有8核 , 所以开 2~7核 , 测50次 library(snow) SPEED <- matrix(0,3,8) rownames(SPEED) <- c("parRapply","parApply","apply") colnames(SPEED) <- c(paste(1:8,"CORE",sep="_")) SPEED_MULTI <- list(NULL) x <- matrix(sample(c("A","T","C","G"),100000,T),50000,2) for(k in 1:50) { for(g in 2:7) { cl <- makeCluster(g,type="MPI") SPEED[1,g] <- system.time(parRapply(cl,x, paste,collapse=""))[3] #平行 SPEED[2,g] <- system.time(parApply (cl,x,1,paste,collapse=""))[3] #平行 SPEED[3,g] <- system.time( apply ( x,1,paste,collapse=""))[3] #非平行 stopCluster(cl) print(g) } SPEED_MULTI[[k]] <- SPEED } PAR_RAPPLY <- t(sapply(SPEED_MULTI,function(tmp){tmp[1,c(-1,-8)]})) PAR_APPLY <- t(sapply(SPEED_MULTI,function(tmp){tmp[2,c(-1,-8)]})) --------------------------------------------------------- 先从单一次的时间测试可看到 在速度上 parRapply > parApply > apply > SPEED 1_CORE 2_CORE 3_CORE 4_CORE 5_CORE 6_CORE 7_CORE 8_CORE parRapply 0 0.288 0.226 0.277 0.260 0.235 0.311 0 parApply 0 0.353 0.309 0.451 0.444 0.438 0.434 0 apply 0 0.439 0.464 0.709 0.716 0.742 0.706 0 ---------------------------------------------------------- 从50次的平均速度来看 开3核似乎是最快的 > colMeans(PAR_RAPPLY) 2_CORE 3_CORE 4_CORE 5_CORE 6_CORE 7_CORE 0.31814 0.24738 0.27184 0.26138 0.25736 0.27146 > colMeans(PAR_APPLY) 2_CORE 3_CORE 4_CORE 5_CORE 6_CORE 7_CORE 0.35836 0.31936 0.36772 0.40882 0.42408 0.43074 ------------------------------------------------ 从 50 次的标准差来看 有时 4核5核 比较稳定 有时 3核7核 比较稳定 没有明显的赢家 > apply(PAR_RAPPLY,2,sd) 2_CORE 3_CORE 4_CORE 5_CORE 6_CORE 7_CORE 0.05133762 0.04803141 0.01216613 0.02597243 0.04290034 0.04530721 > apply(PAR_APPLY,2,sd) 2_CORE 3_CORE 4_CORE 5_CORE 6_CORE 7_CORE 0.04761742 0.04154111 0.05557053 0.05804034 0.04591911 0.02569746 ------------------------------------------------- 结论 : 1. 平行运算在速度上 至少可加速一倍 2. 在 Ram 够用的情况下 开3核或6核较好 但推测每台电脑可能会不一样 3. 平均效能 6核 > 5核 > 4核 > 7核的原因可能是 我的8核中 , 1个分配给虚拟机 所以实质上是 7 核 由於 linux 也要1核 所以当我开 7 核平行时 抢占 linux 的资源 因此反而速度下降 4. 依旧不能理解的问题 是为什麽 3核 会比 6核 还快 ※ 编辑: gsuper 来自: 140.113.239.247 (06/23 15:59) ※ 编辑: gsuper 来自: 140.113.239.247 (06/23 16:01) ※ 编辑: gsuper 来自: 140.113.239.247 (06/23 16:09) ※ 编辑: gsuper 来自: 140.113.239.247 (06/23 16:09) ※ 编辑: gsuper 来自: 140.113.239.247 (06/23 16:10) ※ 编辑: gsuper 来自: 140.113.239.247 (06/23 16:10) ※ 编辑: gsuper 来自: 140.113.239.247 (06/23 16:10) ※ 编辑: gsuper 来自: 140.113.239.247 (06/23 16:15) ※ 编辑: gsuper 来自: 140.113.239.247 (06/23 16:24) ※ 编辑: gsuper 来自: 140.113.239.247 (06/23 16:26)
17F:→ clickhere:good job 06/24 00:58
18F:→ clickhere:copy x到各别的cpu上需要耗时的. 8不一定快. 06/24 00:58
19F:→ clickhere:paste太简单是另一个原因.再apply中多repeat个几次,3就 06/24 00:59
20F:→ clickhere:不一定比较快了. Memory也是个问题, 8 可能需要swap. 06/24 01:00
21F:→ clickhere:你用mpich or lam/mpi也有影响. mpich要求8个需要同步. 06/24 01:01
22F:→ clickhere:lam/mpi内定是先到先做,做完可以休息,资源可以暂时丢回 06/24 01:02
23F:→ clickhere:给系统(memory release) 06/24 01:02
24F:→ clickhere:另外apply函数可能测不出真正的差异(它内定做太多杂事) 06/24 01:06
25F:推 ADORIAN:这篇要不要考虑收入? 06/24 09:30
※ 编辑: gsuper 来自: 218.160.244.59 (06/25 04:17)
26F:推 ADORIAN:我有寄信给板主请他考虑收录此篇, 但没有任何回应. 06/28 16:25
27F:→ ADORIAN: 尚未得到回应 06/28 16:32
gsuper:转录至看板 R_Language 03/30 20:32







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP