Rmpi是否需要有效的Internet连接?

时间:2013-04-18 07:57:15

标签: macos r parallel-processing mpi

我刚刚在Mac OS-X Mountain Lion上使用本教程安装了Rmpihttp://www.stats.uwo.ca/faculty/yu/Rmpi/mac_os_x.htm。我只需要使用Rmpi来使用所有内核,而不是在硬件集群或类似部署上进行部署。

实际上,一切正常但现在我经历过,每当我没有活跃的互联网连接(如坐在火车上或只是转动无线)时,产卵奴隶会失败,我想知道这是否应该像此?

> require( Rmpi )
> mpi.spawn.Rslaves( nslaves=2 )

--------------------------------------------------------------------------
At least one pair of MPI processes are unable to reach each other for
MPI communications.  This means that no Open MPI device has indicated
that it can be used to communicate between these processes.  This is
an error; Open MPI requires that all MPI processes be able to reach
each other.  This error can sometimes be the result of forgetting to
specify the "self" BTL.

  Process 1 ([[56132,1],0]) is on host: ABC-MB02
  Process 2 ([[56132,2],0]) is on host: ABC-MB02
  BTLs attempted: self sm

Your MPI job is now going to abort; sorry.
--------------------------------------------------------------------------
    2 slaves are spawned successfully. 0 failed.
[ABC-MB02:53970] 2 more processes have sent help message help-mca-bml-r2.txt / unreachable proc
[ABC-MB02:53970] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages

然后我的CPU负载刚刚跳到100%,最终R会崩溃。

我有什么想法可以避免这种行为?这是我的sessionInfo

R version 2.15.2 (2012-10-26)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] graphics  grDevices datasets  stats     utils     methods   base     

other attached packages:
[1] Rmpi_0.6-3     ggplot2_0.9.3  stringr_0.6.2  reshape2_1.2.2 plyr_1.8      

loaded via a namespace (and not attached):
 [1] colorspace_1.2-1   dichromat_2.0-0    digest_0.6.3       grid_2.15.2        gtable_0.1.2       labeling_0.1      
 [7] MASS_7.3-23        munsell_0.4        proto_0.3-10       RColorBrewer_1.0-5 scales_0.2.3       tools_2.15.2

1 个答案:

答案 0 :(得分:4)

它不需要互联网连接,但如果您只有“自我”和“sm”BTL可用,那么当你产生进程时,Open MPI似乎会失败,而在我的Mac笔记本电脑上,“tcp”BTL不是'除非“网络首选项”中至少有一个网络“已连接”,否则可用。有趣的是,当工人由mpirun启动而不是产生时,我能够成功使用Rmpi。此外,当Linux机器完全拔掉插头时,我没有遇到任何问题。

我能够通过使用以太网电缆将笔记本电脑连接到另一台计算机,即使是一个小的Raspberry Pi,也可以让我的笔记本电脑成功生成过程。虽然电缆实际上无法用于任何事情,但它欺骗了Mac认为“以太网”已连接,因此“TCP”中提供了“tcp”BTL,因此产生的过程很有效。

更新

我终于找到了解决这个问题的解决方案,适用于我的MacBook Pro。通过将 btl_tcp_if_include MCA参数设置为“lo0”,可以强制Open MPI在笔记本电脑未连接到任何外部网络时使用环回接口进行TCP通信。设置它的一种方法是使用R脚本中的环境变量:

Sys.setenv(OMPI_MCA_btl_tcp_if_include='lo0')
library(Rmpi)
mpi.spawn.Rslaves(nslaves=2)

只要在加载Rmpi之前设置环境变量,它就会起作用,这是在调用MPI_INIT时。