Re: [討論] R平行運算 Rmpi安裝(Mac/Ubuntu/CentOS)
Mac 直接參考 Rmpi 設置網頁即可 , 有安裝home brew 的話 , 基本上
沒大問題 , 不熟home brew 安裝的人可以直接查 home brew 網頁,已經
整理到只要把上面那行原封不動貼到 command line 即可安裝好home brew
由於小弟有點菜加上手邊機器都是借別人的 , 版本跟系統都很亂 , 才
會搞了好幾種 , 感謝 W 大還有 C 大詳細的指教
=================Linux Ubuntu 快速安裝============================
1. 把OpenMPI裝好 (安裝過程本內容有寫)
2. 回去R安裝其他的.......... end
由於我照參考連結還是會遇到自動抓取常常說找不到或版本不行 , 如 Wush 大所說
如果單裝openmpi , 依舊不能用 還要裝很多東西,所以我直接加了apt-get的默認字
元 "*"
一行解:
sudo apt-get install openmpi-* libopenmpi-* openssh-*
參考連結:
(過長 縮網址會被當廣告 請自行拼貼)
http://lsi.ugr.es/~jmantas/pdp/ayuda/datos/instalaciones/
Install_OpenMPI_en.pdf
==============================================================================
==========================CentOS 保險版安裝===================================
1. 下載 OpenMPI
OpenMPI 參考網頁
https://www.open-mpi.org/software/ompi/v1.10/
OpenMPI 安裝影片
https://www.youtube.com/watch?v=QIMAu_o_5V8
2. 設定環境告知mpi 位址(此段請加入 .bashrc):
export PATH=/home/user_local/openmpi_install_dir/bin:$PATH
export LD_LIBRARY_PATH=/home/user_local/openmpi_install_dir/lib:$LD_LIBRARY_PAT
export LD_PRELOAD=/home/user_local/openmpi_install_dir/lib/libmpi.so:$LD_PRELOAD
(第三行是在你一直跳load 問題用的)
3. Compile Rmpi (請確定抓好了Rmpi):
R CMD INSTALL Rmpi_your_version.tar.gz \
--configure-args="--with-mpi-type=OPENMPI \
--with-mpi=/home/user_local/openmpi_install_dir"
Rmpi的設置
http://www.stats.uwo.ca/faculty/yu/Rmpi/
OpenMPI 操作影片
https://www.youtube.com/watch?v=QIMAu_o_5V8
MPI 後續設定文獻
http://lsi.ugr.es/~jmantas/pdp/ayuda/datos/
instalaciones/Install_OpenMPI_en.pdf
參考pbdMPI 的安裝文獻:
https://cran.r-project.org/web/packages/pbdMPI/INSTALL
因為沒有Root 還要手動設定 ./configure , 參考make install文獻:
http://unix.stackexchange.com/questions/42567/
how-to-install-program-locally-without-sudo-privileges
==============================================================================
→ clickhere: OpenMP和OpenMPI是不同的東西.... 05/02 00:15
→ clickhere: OpenMPI和Rmpi都不需要permission.安裝在user下即可. 05/02 00:16
→ clickhere: 不需要root 05/02 00:17
→ JackBaska: 我直接裝library是會跳non-zero status ,然後參考原文 05/02 08:11
→ JackBaska: 網站的做法是先用command line安裝完OpenMPI,然後CMD 05/02 08:11
→ JackBaska: Rmpi後再回到R裡面安裝library才成功,然而前面command 05/02 08:12
→ JackBaska: line的動作我在cluster好像沒有權限,然後試另一個方法 05/02 08:13
→ JackBaOBska: 都遇到版本問題,cluster的R是3.1.x,我還在找怎麼避開 05/02 08:13
→ JackBaska: permission做更新還有以上建置 05/02 08:14
由於C大有提出這個問題 , 想回答C大順便看是否知道怎麼解
我參考的設置是 http://www.stats.uwo.ca/faculty/yu/Rmpi/
網頁 , 由於工作環境的關係 , 我的測試機跟有Root的Server
跟沒有 Root的Cluster 分別是OS X/Linux Xbuntu/Linux CentOS
我已經試了幾個方法安好 parallel需要的東西 , 然而cluster
的 R 是 3.1.x 的 , 有一些 parallel提供的資料會一直跳沒有
支援該版本的 parallel , 所以我轉研究Rmpi相關的 , 前面在
OS X/Cluster的測試已經確定直接安裝Rmpi會出現 non-zero status
而OS X的經驗是只要照網站上做的先install 好 OpenMPI 後才能
成功讓 Rmpi 確實安裝好
所以在 Cluster 上我目前是打算研究是否有辦法像是 brew install
只安裝在 User 底下 , 以避開 permission 的問題 , 不過我剛注意
到Linux 好像是直接開始用 CMD INSTALL Rmpi , 我可能會再回Cluster
試 , 我不確定Cluster 的 OpenMPI是否已經安裝好了 , 但該Cluter
本身有被用 C++/CUDA 在跑平行 , 我可能要再研究一下C++/CUDA所用
的mpi跟 R 的是否有差異
=============安裝時遇到找不到支援版本時=====================
如果你跟我一樣在新電腦裝了 R 但莫名其妙的連 dplyr都跟你說沒
支援版本 , 我還沒確定原因 , 但以下做法是可以work的
"**" : 你要的 package
install.packages("**", dependencies=TRUE,
repos='http://cran.rstudio.com/')
=============補充給需要OpenMPI/RMPI的人=====================
由於昨天到今天有被私訊發現有其他想碰平行的板友遇到類似的狀況
無法做平行 , 這裡補充一下使用的參考網頁
Rmpi的設置 (要先安好 OpenMPI)
http://www.stats.uwo.ca/faculty/yu/Rmpi/
OpenMPI 參考網頁
https://www.open-mpi.org/software/ompi/v1.10/
OpenMPI 操作影片
https://www.youtube.com/watch?v=QIMAu_o_5V8
MPI 後續設定文獻
http://lsi.ugr.es/~jmantas/pdp/ayuda/datos/
instalaciones/Install_OpenMPI_en.pdf
===========================================================
最後我在cluster 上有遇到最後要把Rmpi安上去時不斷出現此訊息
checking for stdint.h... yes
checking for unistd.h... yes
checking mpi.h usability... no
checking mpi.h presence... no
checking for mpi.h... no
configure: error: "Cannot find mpi.h header file"
ERROR: configuration failed for package ‘Rmpi’
爬原文網站發現似乎是 MPI安置位置並沒有寫到R用的路徑裡面
然而網站中提及的修改路徑的資料 , 我還沒找到
====================without Root ============================
設定環境告知mpi 位址:
export PATH=/home/user_local/openmpi_install_dir/bin:$PATH
export LD_LIBRARY_PATH=/home/user_local/openmpi_install_dir/lib:$LD_LIBRARY_PATH
export LD_PRELOAD=/home/user_local/openmpi/lib/libmpi.so:$LD_PRELOAD
Compile Rmpi (請確定抓好了Rmpi):
R CMD INSTALL Rmpi_your_version.tar.gz \
--configure-args="--with-mpi-type=OPENMPI \
--with-mpi-include=/home/user_local/openmpi_install_dir"
參考pbdMPI 的安裝文獻:
https://cran.r-project.org/web/packages/pbdMPI/INSTALL
因為沒有Root 還要手動設定 ./configure , 參考make install文獻:
http://unix.stackexchange.com/questions/42567/
how-to-install-program-locally-without-sudo-privileges
========================================================
export LD_PRELOAD=/home/user_local/openmpi/lib/libmpi.so:$LD_PRELOAD
R裡面叫 mpi時出現時使用上面這行:
Error : .onLoad failed in loadNamespace() for 'Rmpi', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object
'/home/user_local/R/x86_64-redhat-linux-gnu-library/3.1/Rmpi/libs/Rmpi.so':
libmpi.so.12: cannot open shared object file: No such file or directory
Error: package or namespace load failed for ‘Rmpi’
最後感謝 C 大的指導 , 小弟是平行運算菜鳥 , OpenMPI 跟 OenpMP
的差異還沒有很清晰 , 只知道做平行運算 這兩個都有在環境建置中
被使用過
==========能安裝 snow 以及 parallel的話 可參考這個 pseudo code===========
"**" : 自行加入自己想叫的額外套件
trainsmall : 一個超大型的 table資料 , 可自行改成自己要輸入的資料
library("**")
library(magrittr)
library(snow)
library(parallel)
no_core = detectCores() - 1
#用parallel 幫你找出所有cpu ,記得保留一個提供系統運作 , OS X試過若不保留
#R很容易整個當掉
cl = makeCluster(no_core)
#用snow 啟動多 cpu slave
transDat = list()
for(i in 1:5){ #以5個平行運行為例 把要用的資料跟需要引數包成 list
bb = list(1,trainsmalls)
transDat =transDat %>% append(list(bb))
}
#我用 parLapply 將資料傳進Slave 並依造各個 Slave需要讓他們自行拆出資料
#我是覺得這個做法有個缺點 , 就是他會將資料複製 , 我還在找比這個方法更好
#的方式
paraData = parLapply(cl,transDat,function(x) {
require("**")
set.seed(50+x[[1]])
result = "**"(Category ~ PdDistrict+ Months ,data=x[[2]],ntree=10)
return(result)})
paraData[1] # 確認資料有傳出 Slave
stopCluster(cl)
========================================================================
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.160.165.182
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1462149214.A.2B6.html
※ 編輯: JackBaska (118.160.165.182), 05/02/2016 09:10:56
→
05/02 09:50, , 1F
05/02 09:50, 1F
※ 編輯: JackBaska (118.160.165.182), 05/02/2016 09:51:46
→
05/02 09:50, , 2F
05/02 09:50, 2F
→
05/02 09:50, , 3F
05/02 09:50, 3F
→
05/02 09:50, , 4F
05/02 09:50, 4F
→
05/02 09:51, , 5F
05/02 09:51, 5F
感謝Wush大大 你的文章讓我比較有點方向去查guide,不然剛開始完全不知道R怎麼
入手平行 ; Cluster以前是Ubuntu沒錯只是穩定性相對沒那那麼好,為了研究生的肝
後來被全改成CentOS了
以前常是半夜或假日被教授遠端去重開機或做修復動作,聽說有學長還有被問年假
要是crash了是否能隨傳隨到 ? 然後就怒換 CentOS了,不過CentOS 裝機建置非常
費工倒是....只是提前燒肝然後求個穩的概念
(雖然遇到有root的人改BIOS的話研究生還是得被遠端過去 XD)
由於計算能力比較強的Cluster是合作對象的,所以要更新版本得跟管理員說QQ
所以我還在研究是否能夠只在 User Local 更新
手邊的機器Ram只有 16核心(8個雙核) 64 GB的 RAM , 只有 Node的一半不到....
※ 編輯: JackBaska (118.160.165.182), 05/02/2016 10:14:52
→
05/02 10:20, , 6F
05/02 10:20, 6F
→
05/02 10:21, , 7F
05/02 10:21, 7F
→
05/02 10:22, , 8F
05/02 10:22, 8F
→
05/02 10:22, , 9F
05/02 10:22, 9F
→
05/02 10:22, , 10F
05/02 10:22, 10F
→
05/02 10:23, , 11F
05/02 10:23, 11F
→
05/02 10:29, , 12F
05/02 10:29, 12F
→
05/02 10:29, , 13F
05/02 10:29, 13F
→
05/02 10:30, , 14F
05/02 10:30, 14F
→
05/02 10:32, , 15F
05/02 10:32, 15F
→
05/02 10:33, , 16F
05/02 10:33, 16F
→
05/02 10:46, , 17F
05/02 10:46, 17F
→
05/02 10:46, , 18F
05/02 10:46, 18F
→
05/02 12:10, , 19F
05/02 12:10, 19F
※ 編輯: JackBaska (118.160.165.182), 05/02/2016 14:05:40
※ 編輯: JackBaska (118.160.165.182), 05/02/2016 14:06:21
※ 編輯: JackBaska (220.136.225.41), 05/03/2016 21:01:14
※ 編輯: JackBaska (140.109.196.140), 05/05/2016 10:50:41
※ 編輯: JackBaska (140.109.196.140), 05/05/2016 11:30:04
※ 編輯: JackBaska (140.109.196.140), 05/05/2016 11:31:42
※ 編輯: JackBaska (140.109.196.140), 05/05/2016 11:32:34
※ 編輯: JackBaska (140.109.196.140), 05/06/2016 13:21:04
※ 編輯: JackBaska (140.109.196.140), 05/06/2016 13:22:37
※ 編輯: JackBaska (220.136.229.38), 05/06/2016 22:58:32
※ 編輯: JackBaska (220.136.229.38), 05/06/2016 23:03:09
※ 編輯: JackBaska (220.136.229.38), 05/06/2016 23:12:01
※ 編輯: JackBaska (220.136.229.38), 05/06/2016 23:13:55
※ 編輯: JackBaska (220.136.229.38), 05/06/2016 23:17:54
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章