2013-04-18 36 views
5

Tôi vừa cài đặt Rmpi bằng hướng dẫn này: http://www.stats.uwo.ca/faculty/yu/Rmpi/mac_os_x.htm trên Mac OS-X Mountain Lion. Tôi cần RMPi chỉ để sử dụng tất cả các lõi và không cho triển khai trên một cụm phần cứng hoặc tương tự.Rmpi ​​có yêu cầu kết nối Internet đang hoạt động không?

Thực ra mọi thứ hoạt động tốt nhưng bây giờ tôi đã trải nghiệm bất cứ khi nào tôi không có kết nối internet hoạt động (như ngồi trong tàu hoặc chỉ chuyển không dây) sẽ bị lỗi và tôi tự hỏi liệu điều này có được thực hiện hay không như thế này?

> 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 

Sau đó, tải CPU của tôi chỉ nhảy tới 100% và cuối cùng phiên R sẽ bị lỗi.

Bất kỳ ý tưởng nào về cách tôi có thể tránh hành vi này? Đây là 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

Đối với một máy đơn, bộ nhớ này thường thuận tiện hơn và hiệu quả hơn nhiều khi sử dụng các chức năng 'mclapply' và bạn bè từ gói' song song'; những sử dụng bộ nhớ chia sẻ và dĩa, thay vì sinh sản quy trình độc lập. Nó cũng có thể giúp thêm một thẻ 'mpi' vào câu hỏi của bạn, vì nó không thực sự âm thanh R cụ thể. –

+0

@MartinMorgan cảm ơn lời khuyên của bạn. Vấn đề là tôi không thực sự có quyền kiểm soát thư viện song song nào tôi sẽ sử dụng, vì chức năng được thực hiện trong các gói khác mà tôi đang xây dựng ('xcms' và' CAMERA' từ Bioconductor). Những gói này chỉ đơn giản là kiểm tra nếu một trong hai 'Rmpi' (ưa thích) hoặc' tuyết' được cài đặt và triển khai các phép tính với nhiều lõi như tôi chỉ định. Tuy nhiên, với 'tuyết' tôi có thể phá vỡ vấn đề được mô tả ở đây nhưng phải đối mặt với những vấn đề khác. – Beasterfield

+0

Các gói này thuộc cùng một nhóm; có lẽ email đến 'packageDescription ('CAMERA') $ Maintainer' và cũng xcms sẽ dẫn đến một giải pháp dài hạn? –

Trả lời

4

Nó không cần kết nối internet của tôi, nhưng mở MPI dường như thất bại khi bạn đẻ trứng quá trình này nếu bạn chỉ có "ngã" và "sm" sẵn BTL, và trên máy tính xách tay Mac của tôi , "tcp" BTL không khả dụng trừ khi có ít nhất một mạng "Đã kết nối" trong "Tùy chọn mạng". Thật thú vị khi lưu ý rằng tôi đã có thể sử dụng Rmpi ​​thành công khi công nhân được bắt đầu bởi mpirun, thay vì được sinh ra. Ngoài ra, tôi không có bất kỳ vấn đề sinh sản quy trình trên một máy Linux khi nó đã được hoàn toàn unplugged.

Tôi đã có thể nhận được máy tính xách tay của mình để sinh ra các quá trình thành công bằng cách kết nối nó với một máy tính khác bằng cáp ethernet, thậm chí đến một Raspberry Pi nhỏ. Mặc dù cáp không thể thực sự được sử dụng cho bất cứ điều gì, nó lừa Mac nghĩ rằng "Ethernet" đã được kết nối, do đó, "tcp" BTL đã có sẵn trong Open MPI, do đó các quá trình sinh sản đã hoạt động.

Cập nhật:

Cuối cùng tôi đã tìm ra giải pháp cho vấn đề này hoạt động trên MacBook Pro của tôi. Bằng cách đặt tham số btl_tcp_if_include MCA thành "lo0", bạn có thể buộc Mở MPI để sử dụng giao diện loopback cho giao tiếp TCP khi máy tính xách tay của bạn không được kết nối với bất kỳ mạng bên ngoài nào. Một cách để thiết lập nó là với một biến môi trường trong kịch bản R của bạn:

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

Nó xuất hiện để làm việc miễn là bạn đặt biến môi trường trước khi tải Rmpi, đó là khi MPI_INIT được gọi.

+0

Cảm ơn bạn đã tái tạo các vấn đề và chi tiết về nó. Nhưng như bạn đã đề cập, nó không thực sự giải quyết vấn đề của tôi. Vì vậy, tôi đã hy vọng rằng có thể có một số tùy chọn biên dịch cho MPI tránh hành vi này.Tôi cũng tự hỏi liệu có thể kết nối thiết bị "giả" hay không, tức là chỉ cho phép hệ điều hành nghĩ rằng thiết bị được kết nối, rằng TCP BTL sẽ khả dụng. – Beasterfield

+0

@Beasterfield: Tôi đã tự hỏi về một thiết bị Bluetooth vì "Bluetooth PAN" là một trong những mạng được liệt kê, nhưng nó không hoạt động với điện thoại di động của tôi. –

+0

Rõ ràng là dường như không có giải pháp tốt hơn. Cảm ơn vì điều này. – Beasterfield

Các vấn đề liên quan