wiki:wade/Rmpi

Version 5 (modified by wade, 17 years ago) (diff)

--

Document

基本結構

  • library("Rmpi")

將 Rmpi 的 package 載入,讓我們可以使用 MPI 的 function。所以在使用任何 MPI functions 前必須先執行這個指令。

  • mpi.spawn.Rslaves(nslaves=#)

會產生出 # 個 processes,如果沒有任何參數,則會產出這個 MPI 環境中最大數量的 nodes。

  • mpi.close.Rslaves()

將所有的 slaves 關閉,建議在結束程式前必須執行此程式。

  • mpi.quit([saving=yes/no])

將 Rmpi 所分配的資源清除,並且呼叫 R 的 quit function,我們必須使用這個 function 離開程式。

  • mpi.comm.size()

回傳 processes 的個數,一般來說這個數目是 slaves 個數加上 1 個 master。

  • mpi.comm.rank()

回傳每個 process 所代表的數字。

  • mpi.bcast.Robj2slave(object)

將一個 R object(number, string or list) 或是 function 送給所有的 slaves 。

  • mpi.send.Robj(object,destination,tag)

將一個 R object(number, string or list) 送給 destination , destination 是就是 nodes 的 rank 。舉例來說, mpi.send.Robj(object,0,tag) ,會送到 master , mpi.send.Robj(object,10,tag) 會送到 rank = 10 的 slave 。

  • object <- mpi.recv.Robj(mpi.any.source(),mpi.any.tag())

使用這個 function 的 process 會從呼叫它的 process 的 queue 中取得訊息,如果 queue 裡沒有資料,則 process 會一直等到接到訊息為止。

  • info <- mpi.get.sourcetag()

當在 mpi.recv.Robj 後使用這個 function ,會回傳兩個整數,一個是訊息所傳送的 node 編號,一個是它的 tag 。

  • mpi.bcast.cmd("R code")

讓所有的 slave processes 執行 R code , 這個 function 不會等待 slave 執行完畢。

  • results <- mpi.remote.exec("R code")

讓所有的 slave processes 執行 R code ,並且回傳結果,這個 function 會等待所有的 slave 執行完畢後才回傳結果。