【问题标题】:Run parallel simulations in remote unix cluster from matlab从 matlab 在远程 unix 集群中运行并行仿真
【发布时间】:2017-11-16 18:13:12
【问题描述】:

我想在从 matlab 调用它们的远程集群中并行运行模拟。

我设法在我的本地 Ubuntu 机器上运行它们。

unix('parallel -j4 flow > /dev/null :::: Pool.txt');

但是当我希望它在远程集群中运行时,我真的无法让并行命令工作。

第一个问题是避免输入密码。

为此,我使用了 sshpass

unix('sshpass -p password ssh user@cluster.example.com')

这让我进入服务器,但它不会继续到下一个命令行。

我尝试了很多我不想在这里引用的命令。

但是基本上可以有一个很好理解并行 GNU 命令用法的人告诉我如何连接到集群。并在那里运行模拟。只是在服务器上编写一个脚本并从 matlab 运行它会更好吗?

非常感谢任何专家的建议。

【问题讨论】:

    标签: matlab unix cluster-computing simulation gnu-parallel


    【解决方案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
    

    例如

    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
    

    【讨论】:

    • 您好,我创建了密钥,但是当我输入“ssh-copy-id CLUSTERUSERNAME@NODE-0”时,我得到:/usr/bin/ssh-copy-id: ERROR:failed to open ID file 'home/USER/.pub': 没有这样的文件
    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多