Re: [討論] R平行運算 Rmpi安裝(Mac/Ubuntu/CentOS)

看板R_Language作者 (Baska)時間9年前 (2016/05/02 08:33), 9年前編輯推噓0(0019)
留言19則, 2人參與, 最新討論串2/2 (看更多)
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
要跑的機器請全部都一樣的作業系統, 一樣的R版本,
05/02 09:50, 1F
※ 編輯: JackBaska (118.160.165.182), 05/02/2016 09:51:46

05/02 09:50, , 2F
一樣的安裝方法... 最方便的就是全部都Ubuntu, 然後用
05/02 09:50, 2F

05/02 09:50, , 3F
apt-get 裝。你就會發現我過去寫的文章都是多餘的,因為
05/02 09:50, 3F

05/02 09:50, , 4F
linux上安裝簡單到不需要guide, 而其他作業系統就算裝完
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
RAM不是重點呀,環境才是重點... CentOS的話,自己去抓
05/02 10:20, 6F

05/02 10:21, , 7F
OpenMPI來編譯也不會太難
05/02 10:21, 7F

05/02 10:22, , 8F
不管怎麼說,我建議環境在Cluster上一定要要一模一樣
05/02 10:22, 8F

05/02 10:22, , 9F
R的執行路徑, MPI的執行路徑, 所有R套件的安裝路徑...
05/02 10:22, 9F

05/02 10:22, , 10F
然後ssh全部都設定暢通, 讓彼此ssh都是輸入後直接登入
05/02 10:22, 10F

05/02 10:23, , 11F
弄完之後,Rmpi / pbdMPI(我更推) 都是水到渠成
05/02 10:23, 11F

05/02 10:29, , 12F
嗯嗯 , RAM方面主要是有一個人請我幫忙的東西,很燒RAM
05/02 10:29, 12F

05/02 10:29, , 13F
感謝Wush的建議,我還要多爬爬文,之前太習慣直接用root
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
我今天早上是已經裝好OpenMPI,但編譯卡在R的路徑設定
05/02 10:46, 17F

05/02 10:46, , 18F
一直抓不到mpi的 header
05/02 10:46, 18F

05/02 12:10, , 19F
以ubuntu為例,要裝 libopenmpi-dev, 光openmpi-bin不夠
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
文章代碼(AID): #1N9g1UAs (R_Language)
文章代碼(AID): #1N9g1UAs (R_Language)