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燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP