当我试图通过Evaluation>Parallel内核配置在mathematica中配置远程内核时.然后我去“远程内核”并添加主机。在此之后,我尝试启动远程内核,但只有一些内核被启动(它们的数量不同)。我得到的信息如下所示。
KernelObject::r死人:通过remotenodo2连接的子内核看起来已经死了。LinkConnect::linkc:无法连接到LinkObject36154@192.168.1.104,49648@192.168.1.104,38,12. >>通用::stop: LinkConnect::linkc的进一步输出将在此计算过程中被抑制。>>
有什么办法让这件事起作用吗?
考虑到它有时确实加载了一些远程内核,但从来没有全部加载。提前谢谢。
这是我为$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]}一旦它加载了所有的内核,但它通常不加载,只是一个或两个远程内核。
发布于 2011-11-11 20:20:19
给出的信息很少,所以这个答案可能不会100%有用。
首先要考虑的问题是远程计算机上的许可。如果一些内核启动,而另一些内核没有启动,那么您可能已经用完了该机器上内核的许可证。这篇文章的其余部分将假定许可不是问题所在。
连接方法
Mathematica中的远程内核接口默认采用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 arnoudb@machine.example.com ls如果这是可行的,你应该能够完成数学方面的事情。
远程内核连接
要建立连接,需要以下设置,即远程计算机的名称:
machine = "machine.example.com";登录名,通常为$UserName:
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]https://stackoverflow.com/questions/6783840
复制相似问题