给出的信息很少,所以这个答案可能不是 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
如果这可行,您应该能够完成 Mathematica 方面的工作。
远程内核连接
要建立连接,您需要以下设置,远程机器的名称:
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]