本文在经过大量的实验终于不负众望成功的在两台Ubuntu 12.04上部署MPI的一个小型集群,MPICH2所用版本为mpich2-1.4.1,下载地址:http://www.mcs.anl.gov/research/projects/mpich2staging/goodell/downloads/index.php?s=downloads

1.安装准备

1.1 首先肯定是需要安装GCC和G++编译器,这个直接apt-get就OK了;

sudo apt-get g++ gfortran

1.2 设置主机名

先在/etc/hosts中删除原来的hostname,然后 vi /etc/hostname改成你想要的,注意必须顶行写。然后使用hostname命令来重新得到hostname, logout一下再login就会改掉。

这里我用的是node1-ubuntu和node2-ubuntu。

1.3 修改hosts文件,修改如下:

 192.168.1.133    node1-ubuntu server
192.168.1.135 node2-ubuntu

1.4 配置自动ssh登录

这里主要是要各个机器之间能无密码访问,主要用到的就是SSH,因此需要一些设置。

首先,我们需要导出各个节点的公钥和私钥:

$ ssh-keygen -t rsa 

在运行过程中,会提示你输入这个输入那个,不用管那么多,直接回车就完了。等运行结束后,进入.ssh目录,你会看到公钥和私钥文件;

$ cd ~/.ssh
$ ls
id_rsa id_rsa.pub

其中id_rsa就是私钥,id_rsa.pub就是公钥,现在我们需要把各个节点上的公钥都集中发送到一个节点上,来制作授权文件(authorized_keys).

注意:在两台机器必须安装ssh(sudo apt-get install ssh openssh-server)而且必须设置root密码(sudo passwd root),才能远程登录

$ scp ~/.ssh/id_rsa.pub node1-ubuntu:~/.ssh/1.pub

在将node2-ubuntu拷贝到node1-ubuntu后进行如下处理:

$ cp ~/.ssh/id_rsa.pub authorized_keys
$ cat ~/.ssh/1.pub >> authorized_keys

在node1-ubuntu上制作好的authorized_keys拷贝到node2-ubuntu上:(node1-ubuntu使用scp)

$ scp ~/.ssh/authorized_keys node2-ubuntu:~/.ssh/

要想让这两台机器无密码登录,所以我们需要更改一下必要的文件的权限(所有节点都要更改):其实只要保证authorized_keys的文件权限为600或者644

$ chmod 755 ~
$ chmod 755 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/id_rsa
$ chmod 644 ~/.ssh/id_rsa.pub

至此,SSH配置就完成了。下面检验一下:

在一个主机上面SSH另一个主机:

$ ssh node1-ubuntu

2.安装MPICH2

2.1  首先将下载的文件解压,下载的文件在当前用户目录里面的“下载”目录里面,我直接解压到当前目录:

$ tar xvfz mpich2-1.4.1.tar.gz  

2.2 安装官方文档配置的,可以查看解压后的README文档参考:由于是bash,因此选择以下命令,prefix指示安装路径,USERNAME就是当前用户的用户名,由于这里我不用fortran,因此加上参数(--disable-f77 and --disable-fc),

在此之前当然要建立安装MPICH的路径,也就是:

$ mkdir mpich2

运行shell程序configure对mpich进行一些配置,使用hydra作为pm

$ ./configure --prefix=/home/<USERNAME>/mpich2 --with-pm=hydra --disable-f77 --disable-fc 2>&1 | tee c.txt  

而且在之前的安装过程中,我发现如果不禁止fortran,安装会出问题,会导致MPICH2安装不完全而出错,是因为没有安装fortran编译器,如果使用C/C++的话,这里建议禁用fortran。

接下来,编译和安装:

$ make 2>&1 | tee m.txt
$ make install 2>&1 | tee mi.txt

安装完成后,会有如下情况:

至此,MPICH2安装完成。

2.3 设置进程的配置环境

这里所说的配置文件主要是进程管理的配置文件,hydra是默认的进程管理,smpd只支持MPICH2的windows版本。这段配置的详细情况见官方安装文档(章节:Installing and Managing Process Managers):http://www.mcs.anl.gov/research/projects/mpich2staging/goodell/documentation/files/mpich2-1.5-installguide.pdf

首先在/etc下面建立目录:

$ sudo mkdir /etc/hydra

建立hosts文件:

$ sudo vim /etc/hydra/hosts  

文件的结构如下:
# Some Comments
MainNode:8 # other comments
Node1:2
Node2:2

每行中由冒号(:)分隔的前半部分表示节点,可以使用节点名也可以使用IP地址,貌似不区分大小写;后半部分表示可用的CPU数量。注释用“#”前导。根据你的实际情况撰写hosts文件。

编辑如下:

node1-ubuntu:1  # 192.168.1.133
node2-ubuntu:1 #192.168.1.135

然后我们需要告诉hydra hosts文件的位置,hydra通过环境变量进行配置,因此我们需要修改.bashrc文件:

$ vim ~/.bashrc
在文件最后加入如下:
export HYDRA_HOST_FILE=/etc/hydra/hosts

至此,设置完毕进程环境。

2.4 设置环境变量

这里设置环境变量主要是将MPICH的安装目录加到系统环境变量中,这里我在/etc/environment中加入对应的路径:

用vim编辑器打开/etc/environment:

$ sudo vim /etc/environment

输入密码之后,将下面语句添加到最后一行:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/awy/mpich2/bin"

3.测试:

测试MPICH源码包里example下的cpi,然后在主节点下运行:

mpiexec -np 2 ./Download/mpich2-1.4.1/example/cpi

MPICH2在两台Ubuntu上安装的更多相关文章

  1. MPICH2在两台Ubuntu上安装(用mpd做进程管理)

    本文在经过大量的实验终于不负众望成功的在两台Ubuntu 12.04上部署MPI的一个小型集群,MPICH2所用版本为mpich2-1.4.1,下载地址:http://www.mcs.anl.gov/ ...

  2. 如何在一台服务器上安装两个mysql或者更多

    如何在一台服务器上安装两个mysql 1       前言 上篇写了在一台机器上源码编译安装一个mysql,那么如何在一台机器上源码编译安装两个mysql或者更多呢? 2       环境 mysql ...

  3. (windows)一台电脑上安装两个Mysql服务

    原文:https://my.oschina.net/u/1472917/blog/410732 最近需要在一台电脑上安装两个Mysql服务,需求稍微有些奇怪,但确实很必要.本人原本为了本机测试Word ...

  4. 如何在一台机器上安装两个MYSQL数据库

    1.正常安装第一个mysql(安装步骤省略) 2.在控制面板里停止第一个mysql服务 3.将C:\Program Files\MySQL目录下的所有目录和文件copy到另外一个路径,我这里是copy ...

  5. [异常解决] ubuntu上安装JLink驱动遇到的坑及给后来者的建议

    一.前言 最近将整个电脑格式化,改成了linux操作系统 希望这样能让自己在一个新的世界探索技术.提升自己吧- win上的工具用多了,就不想变化了- 继上一篇<ubuntu上安装虚拟机遇到的问题 ...

  6. Ubuntu上安装MongoDB(译)

    add by zhj:直接从第四步开始就可以了,而且安装好MongoDB后会自动启动的,不必自己去执行启动命令 原文:https://docs.mongodb.com/manual/tutorial/ ...

  7. ubuntu上安装mysql 编译安装

    为什么要折腾?首先说明的是ubuntu上安装mysql等软件是非常容易简单的,其简单的程度盖过windows上的安装,一句sudo apt-get install就可以搞定.如果想用最简便的方法安装m ...

  8. Ubuntu上安装和使用SSH,Xming+PuTTY在Windows下远程Linux主机使用图形界面的程序

    自:http://blog.csdn.net/neofung/article/details/6574002 Ubuntu上安装和使用SSH  网上有很多介绍在Ubuntu下开启SSH服务的文章,但大 ...

  9. 关于同一台机器上安装多个sql实例的连接方法

    由于客户需要在一台服务器上安装了两个sql服务器(一个sql2000,一个是sql2005,其实例名不同),默认的端口1433被先安装的sql2000使用,后来安装的的随机启用了一个3045端口.其中 ...

随机推荐

  1. 【HDOJ】2371 Decode the Strings

    快速矩阵乘法.注意,原始字符串即为decode后的字符串.题目是要找到原始串. #include <cstdio> #include <cstring> #define MAX ...

  2. -_-#【工具】图片导出PDF

  3. 3C Tic-tac-toe

    题目大意: 两个选手轮流在 3*3的矩阵上作标记,一个选手总是画一个‘X’, 另一个选手总是画一个‘0’,谁先在水平线上或者垂直线上,或者对角线上,先完成三个点连在一块,谁就赢.画‘×’的选手是第一个 ...

  4. HDU 5416 CRB and Tree

    题目大意: T, T组测试数据 给你一个n有n个点,下标是从 1 开始的.这个是一棵树,然后下面是n-1条边, 每条边的信息是 s,e,w 代表 s-e的权值是w 然后是一个Q代表Q次询问. 每次询问 ...

  5. (转载)mysql 存在该记录则更新,不存在则插入记录的sql

    (转载)http://www.codesky.net/article/201003/105754.html 代码如下: INSERT table (auto_id, auto_name) values ...

  6. 导出C++ dll文件

    方法1. 直接新建 Qt dll library, 使用工程自动创建的宏定义 方法2. (1)新建一个Empty的Win32项目(如ExampleDLL),选择Application type 为DL ...

  7. selenium grid java 资料

    Grid TestNG: 使用Selenium Grid改进Web应用程序的测试: http://www.ithov.com/server/117464.shtml

  8. BASH_SOURCE 用法

    参考 bash少见的用法 http://blog.csdn.net/wonderisland/article/details/22892759. 原有项目里自带的启动脚本用到了bash_source获 ...

  9. 根据新浪天气API获取各地天气状况(Java实现)

    原文出自 参考网址(重要) http://blog.csdn.net/cyxlzzs/article/details/7602469  新浪 http://blog.csdn.net/l_ch_g/a ...

  10. C#中反射接受的字符串需要满足的Backus-Naur Form语法

    MSDN的Specifying Fully Qualified Type Names指明了C#中反射接受的字符串需要满足如下的Backus-Naur Form语法. BNF grammar of fu ...