Ubuntu集群跨节点并行问题



  • 前几天在一台机子上弄好了并行计算,想把算例弄到集群上跑一跑,上午折腾了一下,三台电脑已经通过网线建立了小集群,OF也在各个电脑上安装好了,那么问题来了,在mpirun 跨节点并行的时候,就出现了这个问题
    0_1461836330846_1234.png
    PS:各个节点都是相同的username 即Ubuntu,各个主机名分别是zwk,node1,node2,它们之间可以无密码登录,我的算例文件是在共享的文件系统中(用nfs搞的)。
    parallelDict如下

    zwk          cpu=8
    node1        cpu=8
    node2        cpu=8
    

    我在各个节点上which了rhoPimpleFoam,它们也都在各自相同的路径下:

    /home/Ubuntu/OpenFOAM/OpenFOAM-3.0.1/platforms/linux644GccDPInt32Opt/bin/rhoPimpleFoam
    

    不清楚为什么找不到这个execuable。。。。



  • @Aeronastro 你试下在每个node的~/.bashrc添加source ~/OpenFOAM/OpenFOAM-2.4.0/etc/bashrc ..... , 感觉是mpirun的时候,在每个node上of240还没加载。



  • @lhzhu 我在每个节点上都添加了这个环境变量的source,每个.bashrc中有这样一段:

    #If not running interactively, don't do anything
    case $- in
         *i*) ; ;
           *) return ;;
    esac
    

    我把这几句注释掉

    #If not running interactively, don't do anything
    #case $- in
    #     *i*) ; ;
    #      *) return ;;
    #esac
    

    之后是可以读各个节点的processor了,但是还是不能运行
    0_1461891866991_0429.png

    在运行第一步的时候就崩了,这个不清楚是什么原因。
    PS:这个算例是OF标准算例,rhoPimpleFoam/les/pitzDaily,单节点运行没问题。


  • OpenFOAM教授

    尝试用rsh代替ssh呢?



  • @wwzhao @lhzhu 问题解决了,可能是我之前更改过各个节点的用户名的原因。
    之前为了让各个节点可以无密码ssh登录,将各个节点用户名重新改成相同的(包括用户组和主目录名),这时的OF可能有问题,我干脆删了OF文件夹,重新编译,这回就可以了。

    PS:一直不清楚为什么在.bashrc里的那4句注释掉就可以,之前从来没有对这4句太在意,而是直接添加OF的环境变量就好了。。。



  • @Aeronastro

    你的三台电脑通过什么网线连接的?网卡是什么级别?



  • @cfd-china 就是普通的网线,水晶头的那种,都连到普通交换机上,网卡什么级别我不太清楚,他们的型号都一样



  • @Aeronastro

    计算的时候Execution time和CPU Time差的多么‘?


  • OpenFOAM教授

    @Aeronastro 你可以配置NIS服务,共享Linux账户信息,home分区用NFS挂载。


  • OpenFOAM教授

    PS:一直不清楚为什么在.bashrc里的那4句注释掉就可以,之前从来没有对这4句太在意,而是直接添加OF的环境变量就好了。。。

    这里解释了为什么:http://www.evernote.com/l/AYvYUlXKzfxBIZ5sJbyk-cREUR1SGcAPIto/



  • @xpqiu 非常感谢



  • 我现在是在一台电脑上 进行并行运算,使用的openmpi,测试时,使用hello.c时只能调用两个(我是双核四线程,提示说可以使用线程那个use-hwthread-cpus这个选项,但不知道怎么用),,然后在算例中并行时,也出现无可执行文见

    mpirun was unable to find the specified executable file, and therefore
    did not launch the job.  This error was first reported for process
    rank 0; it may have occurred for other processes as well.
    
    NOTE: A common cause for this error is misspelling a mpirun command
          line parameter option (remember that mpirun interprets the first
          unrecognized command line token as the executable).
    
    

Log in to reply