最近发现了一门新语言 Julia   ,  这门编程语言据说大有取代 Python语言成为数据科学的大佬,但是细看发现最主要说的是这门编程语言运行速度比较快,并且在分布式和并行计算上比较有优势,这时候我就在想PYTHON语言是否也可以比较容易的搭建并行计算的平台呢,这一看还真有,就是  MPI4PY,这是个基于MPI的Python并行计算框架,其实细研究发现这个东西其实就是把MPI做了一下封装,然后把Python的消息用MPI进行传递。

由于  mpi4py  是在MPI 之上进行运作的,需要先安装MPI,  于是下面我们先安装MPI。

MPI 的old 版本下载地址:

http://www.mpich.org/static/downloads/

由于MPICH2的中文资料比较好找,于是本文安装MPICH2的版本,mpich2-1.0.4p1  。

mpich2-1.0.4p1

下载地址:

http://www.mpich.org/static/downloads/1.0.4p1/mpich2-1.0.4p1.tar.gz

下载后解压。

编译:

./configure --prefix=/opt/mpich2-1 --enable-f90 --enable-cxx --enable-threads=multiple --enable-sharedlibs=gcc --with-mpe
make 

sudo make install

本文的安装环境为  Ubuntu16.04, mpi的安装路径设置为  /opt/mpich2-1   。

其中,编译过程中报错,  最后发现是系统中还需要安装LIB库,于是,

sudo apt install mpich

不过据网上说只需要安装   libmpich-dev  就可以,不过没有考证。

安装结束后进行设置:

在  $HOME 文件夹下面的  .bashrc 文件中添加内容:

export PATH=/opt/mpich2-1/bin:$PATH
export LD_LIBRARY_PATH=/opt/mpich2-1/lib:$LD_LIBRARY_PATH

source  .bashrc   更新系统变量。

配置  mpd

cd $HOME

touch .mpd.conf

sudo chmod 600 .mpd.conf
修改内容:  vim .mpd.conf

MPD_SECRETWORD=mr45-j9z
mr45-j9z  为密码内容,  该内容可以自己随意设置。

启动  mpd
mpd &
以上为  MPICH2  安装的全部过程。

下面安装MPI4PY  
sudo pip2 install mpi4py

测试 ,  mpi4py  是否安装成果:

测试文件:

# mpi_helloworld.py

from mpi4py import MPI

comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()
node_name = MPI.Get_processor_name() # get the name of the node print 'Hello world from process %d at %s.' % (rank, node_name)

运行:

mpiexec -n 4 python x.py

安装成功。

================================================================================

MPICH2   安装成功测试:

创建文件  hello.c

#include "mpi.h"
#include <stdio.h>
#include <math.h>
int main (int argc, char **argv)
{
int myid, numprocs;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &myid);
MPI_Comm_size (MPI_COMM_WORLD, &numprocs);
MPI_Get_processor_name (processor_name, &namelen);
fprintf (stderr, "Hello World! Process %d of %d on %s\n", myid, numprocs, processor_name);
MPI_Finalize ();
return 0;
}

编译:

mpicc -o hello hello.c

执行:

mpirun -np 4 ./hello

安装成功。

MPI2 编程环境搭建 MPI4PY 编程环境搭建的更多相关文章

  1. 开始JAVA编程的敲门砖——JAVA开发环境搭建

    从头开始的java编程--JAVA开发环境搭建 一.什么是java的开发环境? 顾名思义java的开发环境是提供并保证整个java程序开发运行的必要的环境,搭建java开发环境是开始java编程的敲门 ...

  2. 使用 Windows 10 WSL 搭建 ESP8266 编译环境并使用 VSCODE 编程(一)(2019-08-23)

    目录 使用 Windows 10 WSL 搭建 ESP8266 编译环境并使用 VSCODE 编程 安装前准备 安装 ESP8266 工具链 下载 ESP8266 SDK 编译 花絮 使用 Windo ...

  3. ubuntu下搭建cocos2dx编程环境-下

         前两篇介绍了cocos2d-x 下linux开发环境配置和android 环境配置问题.在这其中遇到很多问题,所以最后一篇分享一下在处理这些问题时,我是如何解决的,是怎么想的.同时总结一些解 ...

  4. 基于C/S架构的3D对战网络游戏C++框架 _05搭建系统开发环境与Boost智能指针、内存池初步了解

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

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

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

  6. Windows搭建python开发环境,python入门到精通[一]

    从大学开始玩python到现在参加工作,已经有5年了,现在的公司是一家.net的公司用到python的比较少,最近公司有新项目需要用到python,领导希望我来跟其他同事training,就有了这篇博 ...

  7. 怎样搭建PHP开发环境

    搭建PHP开发环境首先第一步要 下载开发环境 wampserver 下载sublime text 2 sublime使用技巧 1:安装漂亮的编程字体http://pan.baidu.com/s/1xM ...

  8. Erlang 101 Erlang环境和顺序编程

    笔记系列 Erlang环境和顺序编程 Erlang并发编程 Erlang分布式编程 Yaws Erlang/OTP 日期              变更说明2014-10-12 A outline, ...

  9. 【转】Windows环境下Android NDK环境搭建

    原文网址:http://www.metsky.com/archives/525.html 前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员 ...

随机推荐

  1. PAT Sum of Number Segments[数学问题][一般]

    1104 Sum of Number Segments(20 分) Given a sequence of positive numbers, a segment is defined to be a ...

  2. PAT 1065 A+B and C[大数运算][溢出]

    1065 A+B and C (64bit)(20 分) Given three integers A, B and C in [−2​63​​,2​63​​], you are supposed t ...

  3. cookie、session、sessionid ,jsessionid 的区别

    本文是转载虫师博客的文章http://www.cnblogs.com/fnng/archive/2012/08/14/2637279.html cookie.session.sessionid 与js ...

  4. redhat 5 samba配置

    1.检查安装包 #rpm –qa | grep samba 必须有以下安装结果 samba-3.0.25:samba-common-3.0.25:samba-client-3.0.25:samba-s ...

  5. 限制可编辑div只能输入纯文本

    本博客转载自张鑫旭大神的一篇文章:小tip: 如何让contenteditable元素只能输入纯文本,原文地址:http://www.zhangxinxu.com/wordpress/2016/01/ ...

  6. Linux系统——防火墙

    防火墙的作用 一种将内部网络和外部网络分开的方法,是一种隔离技术.防火墙在内网与外网通信是进行访问控制,一句锁设置的规则对数据包做出判断,最大限度地阻止网络中的黑客破坏企业网络,从而加强企业网络安全. ...

  7. Thread的六中状态

    线程共有6种状态:在某一时刻只能是这6种状态之一.这些状态由Thread.State这个枚举类型表示,并且可以通过getState()方法获得当前线程具体的状态类型. NEW:至今尚未启动的线程的状态 ...

  8. Flask Web 开发 错误页面自定义

    如果要自定义错误画面,无法大多数情况是自定义404和500的情况 首先,要在路由中设置 通过app.error_handler这个装饰器来绑定响应函数 @main.errorhandler(404) ...

  9. FindBugs详解

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  10. Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project

    本文转自:http://www.phperz.com/article/14/1205/39544.html 本文向大家讲解了Myeclipse错误:Errors occurred during the ...