最近发现了一门新语言 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. 解决FlexPaper分页分段加载问题(转)

    FlexPaper是一个开源的PDF文档在线查看控件.用户查看PDF文档不需要安装Acrobat Reader,但需要利用像SwfTools这样的工具预先将PDF文档转成SWF格式的文件.FlexPa ...

  2. [华为]输出单向链表中倒数第k个结点

    输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针. 链表结点定义如下: struct ListNode { int       m_nKey; ListNode* m_ ...

  3. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

  4. Linux proc 内存

    ps: USER      PID    %CPU %MEM   VSZ   RSS  TTY  STAT  START  TIME  COMMAND root          4238     0 ...

  5. flask jinja的宏

    form中关于表单的定义 class AreaListForm(Form): area1 = BooleanField(u'1区', default=False) area2 = BooleanFie ...

  6. jQuery源码分析--Event模块(3)

    最后剩下了事件的手动触发了.jQuery提供了两个函数trigger和triggerHandler来手动触发事件,可以触发原生事件和自定义的事件.这个触发不单只会触发有jQuery绑定事件,而且也会触 ...

  7. java压缩zip文件中文乱码问题

    用java来打包文件生成压缩文件,有两个地方会出现乱码 1.内容的中文乱码问题,这个问题网上很多人给出了解决方法,两种:修改sun的源码:使用开源的类库org.apache.tools.zip.Zip ...

  8. Ubuntu 14.04安装gnuplot 解决Terminal type set to 'unknown'问题 简易命令教程

    参考: 照猫画虎学gnuplot之折线图 gnuplot 入门教程 1 gnuplot安装,及error:terminal type set to 'unknown'的解决 安装 sudo apt-g ...

  9. python 矩阵转置

    arrA=[[,,,],[,,,],[,,,],[,,,]] N= #声明4x4数组arr arrB=[[None] * N for row in range(N)] print('[原设置的矩阵内容 ...

  10. 快递100API接口调用代码示例

    package com.util; import java.io.IOException; import java.io.InputStream; import java.net.MalformedU ...