目录

安装MPICH

试运行代码

进阶Python版


安装MPICH

1、官网-下载地址:

MPICH | High-Performance Portable MPI

 2、放入Linux中,解压:

tar -xvf mpich-4.0.2.tar.gz

3、配置安装:

cd mpich-4.0.2/
./configure

如果没有 Fortran 编译器,则可以避免构建 MPI Fortran 库:

./configure --disable-fortran

(此处配置等待较久...)

如果报错说“Aborting because C++ compiler does not work.”,就安装下编译器:

sudo apt install g++

4、编译安装:

make; sudo make install

(此处编译等待更久...)

如果报错说无make指令,就安装下cmake:

sudo apt install cmake

5、验证安装是否完成:

mpiexec --version

安装完成。

试运行代码

  • MPI相关教程,推荐看(下面的示例就是摘自这里):A Comprehensive MPI Tutorial Resource · MPI Tutorial
  • 配套代码在:GitHub - mpitutorial/mpitutorial: MPI programming lessons in C and executable code examples​​​​​​

1、待运行的源文件demo.c:

#include <mpi.h>
#include <stdio.h>int main(int argc, char** argv) {// 初始化MPI环境。// MPI Init的两个参数目前没有被MPI实现使用,但是为了以防将来实现可能需要这些参数。MPI_Init(NULL, NULL);// 通过调用以下方法来得到所有可以工作的进程数量int world_size;MPI_Comm_size(MPI_COMM_WORLD, &world_size);// 得到当前进程的rankint world_rank;MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);// 得到当前进程的名字char processor_name[MPI_MAX_PROCESSOR_NAME];int name_len;MPI_Get_processor_name(processor_name, &name_len);// 打印一条带有当前进程名字,rank以及整个 communicator 的大小的 hello world 消息。printf("Hello world from processor %s, rank %d out of %d processors\n",processor_name, world_rank, world_size);// 释放 MPI 的一些资源. 在此之后不能再进行MPI调用MPI_Finalize();
}

2、再编写makefile:

EXECS=demo
MPICC?=mpiccall: ${EXECS}demo: demo.c${MPICC} -o demo demo.cclean:rm ${EXECS}

3、然后编译:

make

注意:如果想要在好几个节点的集群上面跑这个 MPI 程序的话,就需要配置一个 host 文件(不是 /etc/hosts)。如果在笔记本或者单机上运行的话,可以跳过下面这一段。

需要配置的 host 文件会包含你想要运行的所有节点的名称。为了运行方便,你需要确认一下所有这些节点之间能通过 SSH 通信,并且需要根据[设置认证文件这个教程](http://www.eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html)配置不需要密码的 SSH 访问。 我的 host 文件看起来像这样:

host_file:

cetus1:2
cetus2:2
cetus3:2
cetus4:2

(冒号后面的数字表示每个处理器有的核数,也可以不加“冒号和后面的数字”)

应该设置一个叫 MPI_HOSTS 的环境变量,把它指向 host 文件所在的位置。如果单机跑的话就不用设置这个环境变量。

export MPIRUN=/home/kendall/bin/mpirun
export MPI_HOSTS=host_file

4、然后运行:

单机下:

mpirun -n 4 ./demo

或者多机时:

mpirun -n 4 -f host_file ./demo

进阶Python版

上面的MPICH使用C和C++开发,但其实也有Python绑定版,对大部分同学来说这个会更友好。

Python版MPICH库名为:mpi4py,文档推荐:

11. 使用Python的mpi4py模块 — python-parallel-programming-cookbook-cn 1.0 文档

使用起来简单直观多了。

1、安装mpi4py库:

首先也要先安装上面的MPICH,然后:

pip3 install mpi4py

(可能会卡主比较久...)

2、编写helloWorld_MPI.py:

from mpi4py import MPIcomm = MPI.COMM_WORLD
rank = comm.Get_rank()
print("hello world from process ", rank)

3、然后运行:

mpiexec  -n 5 python3  helloWorld_MPI.py

mpirun -np 3 python3 mpi_helloworld.py

安装MPICH并运行第一行代码相关推荐

  1. python练习生|这是你熟悉的第一行代码吗?(附python安装教程(win))

    python练习生|python与pycharm的下载与搭建 一.python的下载方式与环境搭建 1.下载方式 2. Windows 系统下载 python 3.pip 模块安装 1) 关于 pip ...

  2. Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld

    前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...

  3. 第一行代码第一章——你的第一行Android代码

    第一行代码第一章-你的第一行Android代码 知识点目录 1.1 了解全貌--Android王国简介 * 1.1.1 Android系统架构 * 1.1.2 Android已发布的版本 * 1.1. ...

  4. 人人都能学会的python编程教程1:第一行代码

    前言 众所周知,现在IT行业很火,行业薪酬也很高,国家在2017年也发布了人工智能教育的推广计划,人人会编程的时代将要到来.不会编程.不懂编程可能有些跟不上时代的节奏,普通人不懂技术也许会觉得这个很难 ...

  5. Android阅读手札:第一行代码(第一章)

    <第一行代码>作为Android开发入门的经典书籍,是我们非常好的阅读选择,初学者可以迅速了解相关知识,老司机也可以温故知新巩固基础.笔者使用该书的第二版,也就是绿色封面的第一章节< ...

  6. Android build.gradle文件详解(转述自《Android第一行代码》第二版)

    Android build.gradle文件详解 1. 最外层目录下的build.gradle文件 1.1 repostories 1.2 dependencies 2. app目录下的build.g ...

  7. Python零基础速成班-第1讲-认识Python,课程目标,安装环境以及完成第一行代码“hello world”

    1.老师介绍: 姓名:路路哥哥 职务:信息技术高级工程师 主要专业:Java/SpringBoot/后端技术 辅修专业:Web前端技术(Html/Css/JavaScript)/Python 博客:无 ...

  8. 第一行代码第三版笔记

    第3章 Activity 主acitivity:程序运行起来首先启动的activity manifest <?xml version="1.0" encoding=" ...

  9. 《第一行代码》 第一章:第一行Android代码

    1,Android系统架构 2,开发的四大组件 3,丰富的系统控件 Android 系统为开发者提供了丰富的系统控件,使得我们可以很轻松地编写出漂亮的界面.当然如果你品位比较高,不满足于系统自带的控件 ...

  10. 《第一行代码》阅读记录—Git和Notification

    一.Git,版本控制工具 Git和Github简介 Git 是一个开源的分布式版本控制工具,它的开发者就是鼎鼎大名的 Linux 操作系统的作者 Linus Torvalds.Git 被开发出来的初衷 ...

最新文章

  1. 我的理想计算机应用作文,我的理想当编程师作文400字
  2. 准爸爸日记——20120502海淀妇幼建档续
  3. ArcGIS Runtime for .Net Quartz开发探秘(三):承接来自GIS服务器的服务
  4. java的快速开发框架
  5. 什么是抽象类?抽象类的作用_揭秘!Java 泛型背后到底是什么?
  6. SAP UI5 bindItem will cause OData refresh
  7. 基于Redis实现分布式锁实战
  8. android string参数最大长度,每日一问 | 我们经常用的 String类型,你知道它最大可以放多长的字符串吗?...
  9. C++使用localtime函数需要注意的地方
  10. LightOJ 1045 - Digits of Factorial (n!化为m进制后有多少位数字)
  11. Linux 服务器安全加固 10条建议
  12. SD卡, EMMC固化 ,关于bootloader linux
  13. android 删除wifi文件,如何删除无线配置文件
  14. Golang 入门系列(十三)用Beego开发web应用
  15. [360优化]让360安全卫士比火绒还好用 #调教360
  16. matlab绘制成像测井,成像测井系统简介.ppt
  17. php 禁止外链,php伪造referer突破网盘禁止外链
  18. 微软关闭了两种攻击途径:Office 宏、RDP 暴力破解
  19. 为什么感觉现在电脑病毒少了?
  20. 拼团返利电商系统(拼返系统)v2.6

热门文章

  1. win10系统dnf安装不上服务器失败,win10系统玩dnf图表系统组建失败怎么修复
  2. asp.net/net/c#电子购物商城系统-成品
  3. c语言tc2.0编译器下载,c语言tc2.0下载
  4. VB .NET-文本文件读写
  5. 【大数据语言】怎样利用Python爬虫,高效获取大规模数据
  6. win10没有android驱动安装不了,WIN10 MTP USB驱动无法安装解决方法
  7. springcloud整合nacos启动时报错‘com.netflix.client.config.IClientConfig‘ that could not be found
  8. [译]使用YUI 3开发Web应用的诀窍
  9. 一个五年Android开发者百度、阿里、聚美、映客的面试心经
  10. 2020年了,Windows Me还能用吗?