R-3.4.0, Rmpi, MPICH2 Parallel Computation in Windows OS

最近剛好要教學生 R + Rmpi 平行運算,但 Rmpi  在 Windows 作業系統上安裝與執行頗繁複,Google 找到的資訊又多數頗為老舊,所以把過程紀錄下來。

電腦環境:Windows 7 (64 位元), R-3.4.0

註:
我知道新的 Rmpi 套件可以跟 MicroSoft 免費的 MPI 軟體搭配,但一來不喜歡被微軟綁住,二來這樣的搭配一樣只能在 DOS 視窗中的 R 文字界面執行,所以懶得再測。

Step1 下載並安裝 MPICH2 Windows 版

http://www.mpich.org/static/downloads/1.4.1p1/

下載 mpich2-1.4.1p1-win-x86-64.msi , 假設安裝在 d:\MPICH2 資料夾.

(1) 進入 Windows 「控制台」=>「系統與安全性」=>「系統」=>「進階系統設定」=>

「環境變數」=> 找到「PATH」變數 =>「編輯」, 在最前面加入 d:\MPICH2\Bin; …….

(2) 以系統管理員身份執行 Windows DOS 視窗(命令提示字元), 並執行以下指令:

smpd -install -phrase behappy
smpd -status

執行完畢後,可關閉 DOS 視窗。

Step 2 下載並安裝 Rmpi_0.6-3.zip

http://www.stats.uwo.ca/faculty/yu/Rmpi/download/windows/MPICH2

以「系統管理員」身份執行 R-3.4.0,進入 R 之後,使用 install package(s) from local files 安裝 Rmpi_0.6-3.zip 之後, 離開 R.

Step 3

到 R-3.4.0 的安裝資料夾下找到 Rmpi 的資料夾,假設是在 d:\R\R-3.4.0\library\Rmpi , 將該資料夾下的 Rprofile 檔 copy 到自己的 R 軟體工作目錄(working directory),例如 d:\test, 並將該檔改名為 .Rprofile

Step 4. 打開 DOS 視窗(命令提示字元). R 必須在此文字界面執行

輸入以下指令(請改成您自己 R-3.4.0 的安裝資料路徑)

?View Code LANGUAGE
# 底下 3 行是在 DOS 視窗中 key in 執行, 先進入 Step 3 的工作目錄
d:
cd test    
mpiexec -n 5 "d:\R\R-3.4.0\bin\x64\Rterm.exe" --no-save -q
 
# Output:
# master (rank 0, comm 1) of size 5 is running on: eagle
# slave1 (rank 1, comm 1) of size 5 is running on: eagle
# slave2 (rank 2, comm 1) of size 5 is running on: eagle
# slave3 (rank 3, comm 1) of size 5 is running on: eagle
# slave4 (rank 4, comm 1) of size 5 is running on: eagle
 
# 接下來會自動進入 DOS 視窗中的 R 文字界面,可以直接輸入 R 指令
mpi.remote.exec(paste("I am",mpi.comm.rank(), "of",mpi.comm.size()))
 
# Output:
# $slave1
# [1] "I am 1 of 5"
# $slave2
# [1] "I am 2 of 5"
# $slave3
# [1] "I am 3 of 5"
# $slave4
# [1] "I am 4 of 5"
 
mpi.remote.exec(sum(1:mpi.comm.rank()))
 
# Output:
# X1 X2 X3 X4
# 1 1 3 6 10
 
# 執行其他較大的 Rmpi 平行運算程式
source("xxxxxxxx.R", echo=TRUE)
 
mpi.close.Rslaves()
# [1] 1
 
# 離開 R 的文字界面操作模式, 回到 DOS 視窗
mpi.quit()