mpich2集群的几个要点

1. ssh
    这东西连起来真麻烦, 比如有三台机器有10,20,30
    要建ssh的有: 10->20,20->10, 10->30,30->10, 20->30, 30->20
    最少要建连接数是一个排列数A(n, 2), 其中n代表节点数, 2代表任选两个节点. 3个节点得有A(3, 2) = 6.
2. 如果是用root用户, 则mpd.conf文件放在/etc下面,而不是.mpd.conf.其它用户是.mpd.conf
3. mpdboot根据一个文件来启动,一般用mpd.hosts. 得定义local节点在哪, 其它节点则在远程启动
    mpdboot -n 3 -f mpd.hosts --ifhn=node0
    我是在node0上启动mpd的, 所以得定义本地的node, --ifhn=node0. -n 3启动代表3个节点.
    搞了好多次,终于靠熟悉linux的同事搞成功了.原来没定义--ifhn.
其它的可以参考 csdn blog上面有人写的,很详细的说

  • 如果机器太多,可以不用手动ssh. 用一台服务器管理key, 然后再自动ssh, 具体怎么做不清楚,搜一下就知道啦.
  • mpdboot,mpiexec,mpdtrace等都是python脚本. 也可以手工用mpd --host host --port port 来加入一台机器到集群中.
  • mpdboot之后要用mpdtrace -l 检查一下各节点的ip是否对了.我就发生了一件这样的问题,高手帮我搞了很久,hostname相关
  • mpdallexit退出所有的节点
  • mpiexec 可以用来让各节点执行同一道程序,条件是每个节点机器上都有这道程序.
    比如 #mpiexec -n 3 ls ,就是让集群的三台机器都执行ls命令.
    mpi的算pi的程序,可以用 #mpiexec -n 3 ./cpi 这里也有一个经常错的地方,就是有可能某结点没有这个cpi程序.那就运行不了了. 如果有100台机器要运行这个,岂不是要手动copy一百次?
    解决办法: 用@mpiexec -n 3 scp main_node_executable_path local_path 这招好强,哈哈~~让每台机器都执行scp从主节点copy程序到自己的目录上
  • 网上方法都讲要改/etc/hosts文件,来定义节点名称。 实际上用ip还更方便点 :)

你可能感兴趣的:(linux,python,脚本,ssh,Blog)