2011-07-21 32 views
14

Khi tôi cố định cấu hình các hạt nhân từ xa trong toán học thông qua Đánh giá> Cấu hình hạt nhân song song ... sau đó tôi chuyển đến "Hạt nhân từ xa" và thêm máy chủ. Sau đó tôi cố gắng để khởi động hạt nhân từ xa và chỉ một số trong số họ được đưa ra (số lượng của chúng thay đổi). Và tôi nhận được một thông điệp như sau.Làm thế nào để cấu hình các hạt nhân từ xa song song trong Mathematica?

KernelObject :: rdead: Kết nối hạt nhân thông qua remote [nodo2] xuất hiện đã chết. >> LinkConnect :: linkc: Không thể kết nối với LinkObject [36154 @ 192.168.1.104,49648 @ 192.168.1.104,38,12]. >> Chung :: dừng: Đầu ra tiếp theo của LinkConnect :: linkc sẽ bị chặn trong quá trình tính toán này. >>

Bất kỳ ý tưởng nào để làm việc này?

Hãy xem xét đôi khi tải một số hạt nhân từ xa nhưng không bao giờ tất cả chúng. Cảm ơn trước.


Đây là ouput của tôi cho $ConfiguredKernels // InputForm

{SubKernels`LocalKernels`LocalMachine[4], 
SubKernels`RemoteKernels`RemoteMachine["nodo2", 2], 
SubKernels`RemoteKernels`RemoteMachine["nodo1", 2], 
SubKernels`RemoteKernels`RemoteMachine["nodo3", 2], 
SubKernels`RemoteKernels`RemoteMachine["nodo4", 2], 
SubKernels`RemoteKernels`RemoteMachine["nodo5", 2]} 

Một khi nó đã tải tất cả các hạt nhân, nhưng nó thường không, chỉ một hoặc hai hạt nhân từ xa.

+0

BTW, điều này xảy ra với Mathematica 8, được sử dụng để làm việc với Mathematica 7 – Ivan

+0

Có ai đã xác nhận hoặc nhân rộng vấn đề này không? –

+0

Tôi có thể xác nhận điều này không hoạt động. Tôi đã thử kết nối với hạt nhân địa phương của riêng tôi thông qua giao diện hạt nhân từ xa trên Mathematica 8.0.1, và nó không thành công với thông báo lỗi tương tự. –

Trả lời

10

Có rất ít thông tin được cung cấp, vì vậy câu trả lời này có thể không hữu ích 100%.

Vấn đề đầu tiên luôn xem xét là cấp phép trên máy từ xa. Nếu một số hạt nhân khởi động, nhưng một số khác thì không, có thể bạn đã hết giấy phép cho nhân trên máy đó. Phần còn lại của bài đăng này sẽ cho rằng việc cấp phép không phải là vấn đề.

kết nối Phương pháp

Giao diện hạt nhân từ xa trong Mathematica theo mặc định giả định rsh giao thức, mà không phải là sự lựa chọn phù hợp với nhiều môi trường, vì rsh không phải là một giao thức rất an toàn.

Tùy chọn khác là ssh, được hỗ trợ rộng rãi hơn nhiều. Có rất nhiều khách hàng ssh nhưng tôi sẽ tập trung vào một khách hàng đi kèm với Mathematica, cụ thể là WolframSSH.jar. Ứng dụng này dựa trên java, có lợi ích bổ sung khi làm việc giống nhau trên tất cả các nền tảng được hỗ trợ bởi Mathematica (Mac, Window và Linux).

Để tránh phải nhập mật khẩu cho mỗi kết nối hạt nhân, thuận tiện để tạo cặp khóa riêng/khóa công khai. Khóa riêng nằm trên máy tính của bạn và khóa công khai cần được đặt trên máy tính từ xa (thường nằm trong thư mục .ssh của thư mục chính ở xa).

Để tạo một private/public key là bạn có thể sử dụng các tập tin WolframSSHKeyGen.jar, như vậy:

java -jar c:\path\to\mathematica\SystemFiles\Java\WolframSSHKeyGen.jar 

và làm theo các hướng dẫn trên hộp thoại mà đi lên. Khi hoàn tất, sao chép khóa công khai vào.thư mục ssh trên máy từ xa. Trong trường hợp của tôi, tôi gọi các phím kernel_keykernel_key.pub được tự động đặt tên theo cách đó.

Bây giờ bạn có thể kiểm tra kết nối từ một dòng lệnh, như vậy (sử dụng lệnh ls trên máy từ xa):

java -jar c:\path\to\mathematica\SystemFiles\Java\WolframSSH.jar --keyfile kernel_key [email protected] ls 

Nếu công trình này, bạn sẽ có thể kết thúc ở phía bên Mathematica của nhiều thứ.

Kernel từ xa kết nối

Để thực hiện một kết nối bạn cần cài đặt sau, tên của máy từ xa:

machine = "machine.example.com"; 

Tên đăng nhập, thường $ UserName:

user = $UserName; 

Vị trí nhị phân ssh:

ssh = FileNameJoin[{$InstallationDirectory, "SystemFiles", "Java", "WolframSSH.jar"}]; 

Các khóa riêng như mô tả ở trên:

privatekey = "c:\\users\\arnoudb\\kernel_key"; 

Lệnh khởi động cho các hạt nhân:

math = "math -mathlink -linkmode Connect `4` -linkname `2` -subkernel -noinit >& /dev/null &"; 

Một chức năng cấu hình để đưa mọi thứ với nhau:

ConfigureKernel[machine_, user_, ssh_, privatekey_, math_, number_] := 
SubKernels`RemoteKernels`RemoteMachine[ 
    machine, 
    "java -jar \"" <> ssh <> "\" --keyfile \"" <> privatekey <> "\" " <> user <> "@" <> machine <> " \"" <> math <> "\"", number] 

này sử dụng chức năng cấu hình và định nghĩa nó để sử dụng 4 hạt nhân từ xa:

remote = ConfigureKernel[machine, user, ssh, privatekey, math, 4] 

này sẽ khởi chạy hạt nhân:

LaunchKernels[remote] 

Lệnh này thẩm tra nếu các hạt nhân đều được kết nối và điều khiển từ xa:

ParallelEvaluate[$MachineName] 
+0

Xem câu hỏi đã chỉnh sửa của tôi. – Ivan

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