先记录在单机MacBook上的搭建,实验室集群的搭建流程是一样的,不过每台机器都需要做一次。

MacBook:

1、安装mpich3:

$ ./configure --prefix=/Users/xin/sftwr/mpich3 --disable-fortran
$ make
$ make install

2、修改环境变量
打开/etc/bashrc
输入:
export MPI=/Users/xin/sftwr/mpich3
export PATH=${PATH}:${MPI}/bin

3、测试是否正确安装
查看命令是否是我们安装目录下的命令

重启终端,输入:
$ which mpiexec

4、用主机名表示ip地址
打开 /etc/hosts,定义 ip 地址和主机名之间的对应关系:
添加:
127.0.0.1         node0

note: 每个主机中都需要添加所有主机的ip,并赋予每个ip相同的名字 (相当于主机名字是主机ip的别名). 主机之间要设置免密码登录,从而才能登录到其它主机运行 mpiexec 进程

5、创建machinefile文件
在 ~/conf/目录中创建文件
输入:
node0

note: 每台主机需要相同的machinefile文件,文件中的名字可以用ip代替

6、测试:计算圆周率
mpiexec -n 3 -machinefile ~/conf/machinefile /Users/xin/sftwr/mpich3-source/examples/cpi

测试结果:
Process 0 of 3 is on xindeMacBook-Pro.local
Process 1 of 3 is on xindeMacBook-Pro.local
Process 2 of 3 is on xindeMacBook-Pro.local
pi is approximately 3.1415926544231318, Error is 0.0000000008333387
wall clock time = 0.004443

7、安装mpi4py

$ sudo python setup.py install

装好Python MPI后,使用dir()函数查看所有的MPI通信函数

from mpi4py import MPI
comm = MPI.COMM_WORLD
dir(comm)
help(comm.Allreduce)
help(comm.allreduce)

实验室集群:

过程基本没有差别,区别只在于hosts文件中需要记录更多的ip地址(以及主机名,可以任意赋予一个名字)

集群一共8台服务器:

30格子: computer-10 ip地址: 10.1.1.10, 20.1.1.10
28格子: computer-11 ip地址: 10.1.1.11, 20.1.1.11
26格子: computer-12 ip地址: 10.1.1.12, 20.1.1.12
24格子: computer-13 ip地址: 10.1.1.13, 20.1.1.13
22格子: computer-14 ip地址: 10.1.1.14, 20.1.1.14
20格子: computer-15 ip地址: 10.1.1.15, 20.1.1.15
18格子: computer-16 ip地址: 10.1.1.16, 20.1.1.16
16格子: computer-17 ip地址: 10.1.1.17, 20.1.1.17

其中四台服务器上安装了虚拟机:

实体服务器computer-10 上安装了4台虚拟机:10.1.1.50;10.1.1.51;10.1.1.52;10.1.1.53;
实体服务器computer-11 上安装了4台虚拟机:10.1.1.60;10.1.1.61;10.1.1.62;10.1.1.63;
实体服务器computer-12 上安装了4台虚拟机:10.1.1.70;10.1.1.71;10.1.1.72;10.1.1.73;
实体服务器computer-13 上安装了4台虚拟机:10.1.1.80;10.1.1.81;10.1.1.82;10.1.1.83;

尽量只在虚拟机上操作,所以hosts文件的内容是:

10.1.1.50 node0
10.1.1.51 node1
10.1.1.52 node2
10.1.1.53 node3
10.1.1.60 node4
10.1.1.61 node5
10.1.1.62 node6
10.1.1.63 node7
10.1.1.70 node8
10.1.1.71 node9
10.1.1.72 node10
10.1.1.73 node11
10.1.1.80 node12
10.1.1.81 node13
10.1.1.82 node14
10.1.1.83 node15

其它问题:

mpich3的更多的命令参数可参看官网文档:http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4-userguide.pdf。

在所有的服务器上运行的mpi版本必须一致,否则也会出错。

有时有些问题是由于防火墙导致的,在运行mpi程序时,我们可以关掉防火墙:

关闭防火墙

#service iptables stop

查看防火墙状态

#service iptables status

搭建 MPICH3 并行计算环境的更多相关文章

  1. AI应用开发实战 - 从零开始搭建macOS开发环境

    AI应用开发实战 - 从零开始搭建macOS开发环境 本视频配套的视频教程请访问:https://www.bilibili.com/video/av24368929/ 建议和反馈,请发送到 https ...

  2. 自定义搭建PHP开发环境

    学习了一段时间php了,因为之前是刚接触php,所以用的是集成安装包(wamp).现在想进一步了解apache.mysql.php之间的关系以及提升自己所以进行自定义搭建PHP开发环境.废话不多说,请 ...

  3. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...

  4. 使用virtualenv搭建python3开发环境

    问题描述 环境: CentOS6.5 想在此环境下使用python3进行开发,但CentOS6.5默认的python环境是2.6.6版本. 之前的做法是直接从源码安装python3,替换掉现有的开发环 ...

  5. Windows下搭建PHP开发环境

    PHP集成开发环境有很多,如XAMPP.AppServ......只要一键安装就把PHP环境给搭建好了.但这种安装方式不够灵活,软件的自由组合不方便,同时也不利于学习.所以我还是喜欢手工搭建PHP开发 ...

  6. 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)

    ——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...

  7. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

  8. Windows 搭建 .NET 跨平台环境并运行应用程序

    写在前面 阅读目录: Install .NET Version Manager (DNVM) Install .NET Core Execution Environment (DNX) Write t ...

  9. mac os 下搭建android开发环境

    mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...

随机推荐

  1. magento后台无法登陆的问题

    解决方法: 打开 magento/app/code/core/Mage/Core/Model/Session/Abstract/varien.php 将// set session cookie pa ...

  2. 创建MySQL存储过程示例

    创建MySQL存储过程是学习MySQL数据库必须要掌握的知识,下文对创建MySQL存储过程作了详细的介绍,供您参考学习. AD:2013大数据全球技术峰会课程PPT下载 下文将教您如何创建MySQL存 ...

  3. Shell脚本基础I

    1.Linux shell类型 /bin/sh--已经被/bin/bash所取代 /bin/bash--就是Linux预设的shell /bin/ksh--由AT&T Bell lab发展出来 ...

  4. JavaPersistenceWithHibernate第二版笔记-第六章-Mapping inheritance-002Table per concrete class with implicit polymorphism(@MappedSuperclass、@AttributeOverride)

    一.结构 二.代码 1. package org.jpwh.model.inheritance.mappedsuperclass; import javax.persistence.MappedSup ...

  5. Model元数据解析

    Model 元数据是针对数据类型的一种描述信息,主要用于控制数据类型本身及其成员属性在界面上的呈现方式,同时也为Model 绑定和验证提供必不可少的元数据信息.一个复杂数据类型通过属性的方式定义了一系 ...

  6. Mac下无法拷贝文件到移动硬盘

    Mac下无法拷贝文件到移动硬盘? 是移动硬盘的文件格式的问题. Mac系统无法识别 NTFS 格式的文件. 将移动硬盘格式化为 exFAT 格式的. 别担心,exFAT 格式的硬盘在Windows下也 ...

  7. Java-HTTP连接时如何使用代理(一)—— System.Property方式

    在发起HTTP请求(openConnection() 或者 openStream())之前,加上以下2行代码: System.setProperty("proxyHost", PR ...

  8. 每天一个小算法(Shell Sort2)

    希尔排序: 伪代码: input: an array a of length n with array elements numbered 0 to n − 1 inc ← round(n/2) wh ...

  9. 下拉刷新控件(4)SwipeRefreshLayout官方教程(上)如何在应用中使用它

    http://developer.android.com/training/swipe/add-swipe-interface.html 1,在布局xml和代码中使用它 2,在menu中添加它 The ...

  10. plsql programming 19 触发器

    挂起语句, 是指数据库 Hang 到那不能动了, 触发的. 1. DML 触发器 这种类型的触发器对于开发人员都很常见, 其他类型的触发器主要是给DBA使用的. 配置触发器,我们需要回答以下问题: 触 ...