給出的信息很少,所以這個答案可能不是100%有用。
要始終考慮的第一個問題是遠程計算機上的許可。如果某些內核啓動了,但其他內核卻不啓動,則可能已經耗盡該機器上內核的許可證。這篇文章的其餘部分將假定許可不是問題。
連接方法
默認情況下數學遠程內核接口假定RSH協議,這是不是很多環境的正確選擇,因爲RSH是不是一個非常安全的協議。
另一種選擇是ssh,這得到了更廣泛的支持。客戶端有很多ssh客戶端,但我將專注於包含Mathematica的客戶端,即WolframSSH.jar。這個客戶端是基於Java的,它具有在Mathematica(Mac,Window和Linux)支持的所有平臺上工作的額外好處。
爲了避免必須爲每個內核連接輸入密碼,創建私鑰/公鑰對是很方便的。私鑰保留在您的計算機上,公鑰需要放在遠程計算機上(通常位於遠程主目錄的.ssh文件夾中)。
要生成公鑰/私鑰對,你可以使用WolframSSHKeyGen.jar文件,像這樣:
java -jar c:\path\to\mathematica\SystemFiles\Java\WolframSSHKeyGen.jar
,並按照上拿出的對話框中的指示。完成後,將公鑰複製到。遠程計算機上的ssh文件夾 。在我的情況下,我打電話kernel_key
和kernel_key.pub
這些鍵被自動命名。
您現在可以測試在命令行的連接,就像這樣(使用遠程機器上的ls
命令):
java -jar c:\path\to\mathematica\SystemFiles\Java\WolframSSH.jar --keyfile kernel_key [email protected] ls
如果一切正常,你應該能夠完成對Mathematica的側的東西。
遠程內核連接
爲了讓你需要以下設置的連接,遠程計算機的名稱:
machine = "machine.example.com";
的登錄名,通常是$用戶名:
user = $UserName;
ssh二進制位置:
ssh = FileNameJoin[{$InstallationDirectory, "SystemFiles", "Java", "WolframSSH.jar"}];
私鑰如上所述:爲內核
privatekey = "c:\\users\\arnoudb\\kernel_key";
啓動命令:
math = "math -mathlink -linkmode Connect `4` -linkname `2` -subkernel -noinit >& /dev/null &";
的配置功能,把一切融合在一起:
ConfigureKernel[machine_, user_, ssh_, privatekey_, math_, number_] :=
SubKernels`RemoteKernels`RemoteMachine[
machine,
"java -jar \"" <> ssh <> "\" --keyfile \"" <> privatekey <> "\" " <> user <> "@" <> machine <> " \"" <> math <> "\"", number]
這將使用配置功能並將其定義爲使用4個遠程內核:
remote = ConfigureKernel[machine, user, ssh, privatekey, math, 4]
這將啓動內核:
LaunchKernels[remote]
該命令將驗證如果內核都連接和遠程:
ParallelEvaluate[$MachineName]
順便說一句,這種情況使用Mathematica 8,用於使用Mathematica 7的工作 – Ivan
有沒有人確認或複製過這個問題? –
我可以證實這是行不通的。我嘗試通過Mathematica 8.0.1上的遠程內核接口連接到我自己的本地內核,並且失敗時顯示相同的錯誤消息。 –