我想在远程群集中并行运行模拟,从matlab调用它们。
我设法使用。
在我当地的Ubuntu机器上运行它们unix('parallel -j4 flow > /dev/null :::: Pool.txt');
但是当我希望它在远程集群中运行时,我真的没有让并行命令工作。
第一个问题是避免输入密码。
为此,我使用了sshpass作为
unix('sshpass -p password ssh user@cluster.example.com')
让我进入服务器,但它不会继续到下一个命令行。
我尝试了很多我不想在这里引用的命令。
但基本上可以理解并行GNU命令用法的一些人告诉我如何连接到群集。并在那里运行模拟。是不是只在服务器上创建一个脚本并从matlab运行它?
非常感谢任何专家建议。
答案 0 :(得分:1)
您的问题不在于 GNU Parallel ,而在于配置ssh
。首先,您必须设置ssh
,其余部分很容易。
因此,在您当地的Ubuntu机器上,您需要创建密钥:
ssh-keygen -t rsa -b 2048
这会在$HOME/.ssh
中生成一些文件。您现在需要将这些密钥的公共部分复制到要运行并行作业的远程集群的每个节点:
ssh-copy-id -i $HOME/.ssh/id_rsa.pub CLUSTERUSERNAME@NODE-0
...
ssh-copy-id -i $HOME/.ssh/id_rsa.pub CLUSTERUSERNAME@NODE-15
e.g。
ssh-copy-id -i $HOME/.ssh/id_rsa.pub fred@192.168.0.100
现在,测试你可以ssh
进入每个节点:
ssh fred@node2
然后,在您的本地Ubuntu框中,设置ssh
的配置文件,因此它将是$HOME/.ssh/config
Host node0
Hostname 192.168.0.100
User fred
...
...
Host node15
Hostname 192.168.0.115
User fred
现在你可以使用:
ssh node0
它会知道这意味着fred@192.168.0.100
现在 GNU Parallel 可以使用:
parallel -S node0,node1,node2