zoukankan      html  css  js  c++  java
  • 【转】Linux下MPI并行环境与Eclipse配置全过程。Linux + mpich2 + Eclipse

    Linux下MPI并行环境与Eclipse配置全过程。Linux + mpich2 + Eclipse

    我是Linux超级新手,文中难免有错误的地方,望指正和多多包容

    硬件情况:2台主机
    主机1: 主机名:node1  IP:192.168.19.165   操作系统:CentOS 5.2  用户:root 密码:root
    主机2: 主机名:node2  IP:192.168.19.169   操作系统:CentOS 5.2  用户:root 密码:root
    (这里的两台主机上的用户名和密码设置成一样的,好像不一样的话将会影响之后mpi程序的执行)

    为了省事,以下操作都是以root用户进行的
    1、===================配置host文件=========================
    在node1和node2上
    #vi /etc/hosts   打开hosts文件,修改如下:
    127.0.0.1 localhost.localdomain localhost
    192.168.19.165 node1
    192.168.19.169 node2
    (注意127.0.0.1 localhost.localdomain localhost一定不能缺,否则将可能导致之后 mpiexec运行出错)

    2、====================设置SSH信任连接====================
    在node1上生成SSH秘钥对.
    #ssh-keygen -t rsa    yes,一路回车
    #cat  /root/.ssh/id_rsa.pub | root@192.168.19.169 "cat - >> root/.ssh/authorized_keys" 将密钥等信息拷贝至node2中,该过程需要输入node2上root用户的密码
    #ssh root@node2   登陆node2
    #exit
    #ssh root@node2   第二次登陆node2,无需再输入密码了
    #exit
    #ssh root@node1   登陆自身一次

    在node2上执行同样的操作,只不过目标换成node1了
    #ssh-keygen -t rsa    yes,一路回车
    #cat  /root/.ssh/id_rsa.pub | root@192.168.19.165 "cat - >> root/.ssh/authorized_keys"
    #ssh root@node1 
    #exit
    #ssh root@node1  
    #exit
    #ssh root@node2  
    (以上使用的ssh,如果系统安装的ssh2,设置过程将与上有所不同)

    3、=====================安装mpich2======================
    在node1和node2上:
    #tar -zxvf mpich2-1.0.1.tar.gz  解压缩
    #cd mpich2-1.0.1
    #./configure     --prefix==安装路径,指定安装路径时可以使用#./configure --prefix=???,不带参数时默认安装路径为/usr/loacl,我用的是默认安装路径
    #make
    #make install  安装完成
    (为了避免未知错误,两台机器的mpich2安装位置最好一样)

    设置环境变量:
    #cd /etc/
    #vi profile   编辑profile文件
    添加   PATH="$PATH:/usr/local/bin"
    #source profile
    #which mpd    测试环境变量

    创建并修改/etc/mpd.conf文件
    #vi /etc/mpd.conf
    内容为
    secretword=myword
    #touch /etc/mpd.conf     
    #chmod 600 /etc/mpd.conf     (设置文件读取权限和修改时间,这两步好像不能省)

    创建主机名称集合文件/root/mpd.hosts
    #vi /root/mpd.hosts
    文件内容如下:
    node1
    node2

    4、=====================简单的测试=========================
    在node1上
    #mpd &    启动
    #mpdboot -n 2 -f mpd.hosts   启动2台机器(启动的机器数不能超过集群中的主机数,这里只有2台)
    #mpdtrace 观看启动机器
    #mpiexec -n 4 /usr/local/examples/cpi     number为使用的进程数,运行mpi自带的测试程序(不一定存在)
    #mpdallexit   退出

    mpi程序的编译
    #mpicc example.cc -o example          C语言源代码
    或#mpic++ example.cc -o example       C++语言源代码
    或#mpif77 example.f -o example         Fortran语言源代码

    编译后可以执行:
    #mpdboot -n 2 -f mpd.hosts
    #scp /tmp/example  root@node2:/tmp/example  (/tmp/为刚才编译的程序所在文件夹)
    (需要并行运算的程序在两台主机上所存放的路径必须相同,文件名也必须相同我这里都存放在/tmp/文件夹下)
    #mpiexec -n 4 /tmp/example

    5、===================在Eclipse中开发MPI程序=================
    在新建的工程上点右键 选择Properties


    添加include路径,我的mpich2安装在/usr/local




    添加lib库路径,添加mpich,mpichxx,pthread   注:这是在linux下,与windows环境下需添加的库不同


    OK,Eclipse加MPI开发环境配置完成

    参考资料:
    SSH设置:
    http://stevenz.blog.hexun.com/15798089_d.html
    MPICH2配置:
    http://www.xxlinux.com/linux/article/accidence/install/20070514/8413.html
    MPI与Eclipse:
    http://blog.csdn.net/cleverysm/archive/2007/06/06/1640290.aspx
    一些MPI错误解决方法:
    http://blog.csdn.net/xiaxiazls/archive/2009/09/08/4530423.aspx
  • 相关阅读:
    MySQL字符串中数字排序的问题
    Jquery 实现跨域处理
    mysql中insert into select from的使用
    Mysql索引会失效的几种情况分析(转)
    ASP.Net Web API 输出缓存(转)
    8 种提升 ASP.NET Web API 性能的方法 (转)
    C#进阶系列——WebApi 异常处理解决方案(转)
    C#使用Log4Net记录日志(转)
    前端传递对象列表到WebApi
    忏悔录
  • 原文地址:https://www.cnblogs.com/HOUST/p/3029472.html
Copyright © 2011-2022 走看看