https://www.itdaan.com/blog/2017/04/29/4184b453ec6c.html

安装(腾讯云centos 6.5 64位)

  • yum list mpich* 查看有什么版本的mpich包,在此处有版本2的,所以装版本2的
  • yum install mpich2 mpich2-devel mpich2-doc
  • which mpicc 发现找不到该命令
  • find / -name "mpich" 然后会找到mpich的目录,可能会有好几个,有bin的那个就是我们要找的目录
  • cd ~
  • vi .bashrc
  • 在后面加上MPI_ROOT=/usr/lib64/mpich
  • export PATH=$MPI_ROOT/bin:$PATH 这里的目录视具体情况而定
  • source .bashrc 使之生效

使用(新建文件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);/* 当前进程的ID号 */
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;
}
  • 1
mpicc -o hello hello.c
mpirun -np 4 ./helloc

centos7(自测成功)

yum -y mpich*

[root@localhost ~]# yum -y mpich*
Loaded plugins: fastestmirror
No such command: mpich*. Please use /usr/bin/yum --help
[root@localhost ~]# yum list mpich*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* epel: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.163.com
* updates: mirrors.163.com
Installed Packages
mpich-3.0.x86_64 3.0.4-10.el7 @base
mpich-3.0-devel.x86_64 3.0.4-10.el7 @base
mpich-3.0-doc.noarch 3.0.4-10.el7 @base
Available Packages
mpich-3.0.i686 3.0.4-10.el7 base
mpich-3.0-autoload.x86_64 3.0.4-10.el7 base
mpich-3.0-devel.i686 3.0.4-10.el7 base
mpich-3.2.i686 3.2-2.el7 base
mpich-3.2.x86_64 3.2-2.el7 base
mpich-3.2-autoload.x86_64 3.2-2.el7 base
mpich-3.2-devel.i686 3.2-2.el7 base
mpich-3.2-devel.x86_64 3.2-2.el7 base
mpich-3.2-doc.noarch 3.2-2.el7 base
yum install mpich3 mpich3-devel mpich3-doc  #不可以,单独运行下面的
yum install mpich-3.0.x86_64
yum install mpich-3.0-devel.x86_64
yum install mpich-3.0-doc.noarch

  


Linux下MPI并行编程环境搭建配置

本文永久链接地址:http://www.lifeba.org/arch/linux_mpi.html

MPI的全称是Message Passing Interface即标准消息传递界面,可以用于并行计算。MPI有多种实现版本,如MPICH, CHIMP以及OPENMPI。这里我们采用MPICH版本。

一、MPICH安装

下载:http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz

tar -xzvf soft/mpich-3.0.4.tar.gz
cd mpich-3.0.4/
./configure --prefix=/usr/local/mpich
make && make install

安装后加入环境变量/etc/profile,并执行 source /etc/profile

PATH=$PATH:/usr/local/mpich/bin
MANPATH=$MANPATH:/usr/local/mpich/man
export PATH MANPATH

二、单节点测试

复制源代码包下的examples目录到安装目录下

cp -r examples/ /usr/local/mpich

执行

mpirun -np 10 ./examples/cpi

输出结果如下:

Process 0 of 10 is on server150
Process 9 of 10 is on server150
Process 1 of 10 is on server150
Process 4 of 10 is on server150
Process 5 of 10 is on server150
Process 7 of 10 is on server150
Process 2 of 10 is on server150
Process 3 of 10 is on server150
Process 6 of 10 is on server150
Process 8 of 10 is on server150

pi is approximately 3.1415926544231256, Error is 0.0000000008333325
wall clock time = 0.020644

如果我们现在想编译文件: 在/home/houqingdong下执行:  mpicc -o hello  hello.c 这时候会提醒:-bash:mpicc  command not found 这是因为我们还没有配置路径

在命令行下输入: export PATH=/home/houqingdong/mpiexe/bin:$PATH  注意:这里仅仅是暂时的设置路径,在重启后效果会消失,如果想一劳永逸的配置,请google查询

看一下我们配置是否成功可以执行一下  echo $PATH 看一下输出结果中是否有我们的路径

三、集群配置

1、集群机器上面需要配置ssh登录权限。参考:Hadoop-0.21.0在linux分布式集群配置 中的ssh配置(密钥无密码登录)部分。

2、复制编译程序到其他机器上面

scp -r mpich server140:/usr/local/
scp -r mpich server151:/usr/local/
scp -r mpich server130:/usr/local/
scp -r mpich server143:/usr/local/

同时在每台机器上面相应加入环境变量中。

3、
在/usr/local/mpich 下新建servers文件,内容如下:

server150:2 #run 2 process
server140:2
server130:2
server143:2
server151:2

执行下面命令,并指定servers文件

mpiexec -n 10 -f servers ./examples/cpi

输出

Process 0 of 10 is on server150
Process 1 of 10 is on server150
Process 4 of 10 is on server140
Process 5 of 10 is on server140
Process 6 of 10 is on server143
Process 7 of 10 is on server143
Process 8 of 10 is on server130
Process 9 of 10 is on server130
Process 2 of 10 is on server151
Process 3 of 10 is on server151
pi is approximately 3.1415926544231256, Error is 0.0000000008333325
wall clock time = 0.018768

四、参考资料

 
 
 

centos中mpich的安装及使用的更多相关文章

  1. centos中MySQL,VmTools安装,使用及异常

    Linux(CentOS)中常用软件安装,使用及异常--MySQL,VmTools 本文主要是为了记录在工作中遇到的常用软件的安装过程,方便以后遇到相同情形时可以快速的查阅.主要讲述了MySQL, V ...

  2. CentOS中利用Docker安装RabbitMQ

    CentOS中利用Docker安装RabbitMQ 1.拉取镜像(带管理平台) #docker pull rabbitmq:3.7.7-management 2.启动容器: #docker run - ...

  3. CentOS中利用Docker安装Redis

    CentOS中利用Docker安装Redis 1.拉取镜像 #docker pull redis:4.0.10 2.加载镜像 #docker run -p 6379:6379 --name test- ...

  4. 阿里云centos中mysql的安装及一些常识知识

    -------------------------------------------------------------------    阿里云centos中mysql的安装 工具WinSCP v ...

  5. centos 中GTK的安装

    centos 中GTK的安装 yum install gtk*

  6. Linux(CentOS)中常用软件安装,使用及异常——XManager, 中文支持,JDK

    XManager图形化界面远程连接 采用Xshell的方式可以不用在CentOS系统中配置即可以相连,主要原理就是SSH连接的方式,但是XManager图形化界面远程连接是需要修改CentOS系统的. ...

  7. CentOs中mysql的安装与配置

    在linux中安装数据库首选MySQL,Mysql数据库的第一个版本就是发行在Linux系统上,其他选择还可以有postgreSQL,oracle等 在Linux上安装mysql数据库,我们可以去其官 ...

  8. CentOs中mysql的安装与配置(转)

    在linux中安装数据库首选MySQL,Mysql数据库的第一个版本就是发行在Linux系统上,其他选择还可以有postgreSQL,oracle等 在Linux上安装mysql数据库,我们可以去其官 ...

  9. Centos中yum方式安装java

    查看CentOS自带JDK是否已安装.◆输入:yum list installed |grep java. 若有自带安装的JDK,如何卸载CentOS系统自带Java环境?◆卸载JDK相关文件输入:y ...

  10. Centos中git的安装

     CentOS的yum源中没有git,只能自己编译安装,现在记录下编译安装的内容,留给自己备忘. 确保已安装了依赖的包 yum install curl yum install curl-deve ...

随机推荐

  1. 进程间通信-POSIX 共享内存

    POSIX 共享内存 POSIX 共享内存是一种在 Linux 系统上使用的共享内存机制,它允许多个进程可以访问同一个内存区域,从而实现进程间的数据共享.共享内存是可用IPC机制中最快的,使用共享内存 ...

  2. 2、Java语言基础知识

    数据类型及范围 四种:整型(byte,short,int,long).浮点型(float,double).字符型(char).布尔型(true,false) 类型 byte short int lon ...

  3. Spring注解之@Value基于Apollo或者YAML文件为静态变量赋值

    摘要:Spring Boot微服务中,把在Apollo配置中心或者YAML文件里配置的属性赋值给静态变量. 综述   Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环 ...

  4. 使用Plop.js高效生成模板文件

    前情 开发是个创造型的职业,也是枯燥的职业,因为开发绝大多数都是每天在业务的代码中无法自拨,说到开发工作,就永远都逃不开新建文件的步骤,特别现在组件化开发胜行,每天都是在新建新建组件的道路上一去不返, ...

  5. pytorch入门 - LetNet5 神经网络

    1.LetNet5简介 LeNet5是由Yann LeCun等人在1998年提出的一种卷积神经网络架构,主要用于手写数字识别.它是早期卷积神经网络的成功应用之一,为现代深度学习模型奠定了基础.LeNe ...

  6. C#/.NET/.NET Core优秀项目和框架2025年5月简报

    前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍.功能特点.使用方式以及部分功能 ...

  7. 自定义localStorage监听事件

    一.问题 在项目开发过程中,发现有很多时候进行localStorage.setItem()操作设置本地存储后,页面必须刷新才能够获取到存储数据,而有些时候本地缓存更新后,页面无法通过再次刷新以获取本地 ...

  8. kubernetes如何将pod运行在master节点

    一.简单说明 这里我们部署的Kubernetes集群,master节点默认是unscheduled的状态,也就是默认拒绝将Pod调度到master节点运行.专业术语就是:Master节点被赋予了一个或 ...

  9. 利用 Kubernetes 降本增效?EasyMR 基于 Kubernetes 部署的探索实践

    Kubernetes 是用于编排容器化应用程序的云原生系统.最初由 Google 创建,如今由 Cloud Native Computing Foundation(CNCF)维护更新. Kuberne ...

  10. hot100之回溯上

    全排列(046) class Solution { List<List<Integer>> res = new ArrayList<>(); public List ...