mpi环境配置

单机上mpi环境配置

1.配置好ssh

命令如下:

在当前主机下,执行ssh-keygen,将提示密钥存放的目录,敲回车确定。提示输入密码,为了运行程序时方便,不需要输入密码,直接输入两次回车确认即可。

然后将共有密钥放在自己的认证密钥里,cd ~/.ssh     进入.ssh后执行 cp id_rsa.pub authorized_keys这样ssh 时不用输入密码了。

修改 /etc/hosts文件,从localhost localhost.localdomain下一行凯斯,填入需要运行MPI的所有节点名及其ip地址:

(本机ip) node1

(本机ip) node2

(本机ip) node3

(本机ip) node4

然后修改或者创建 /etc/hosts.equiv文件,将允许访问本节点进行mpi计算的所有其他节点填入,一行一个节点名。这一步是使本节点对其他结点放权,文件如下:

node1

node2

node3

node4

然后测试

若果不用输入密码,则配置成功。如果是新手,会遇到ifconfig问题,参考https://blog.csdn.net/sinat_35605242/article/details/80941483

 

2.安装mpich

我太难了,我可能是个🐖,,,windows的文件一直拖都拖不到Xshell,改了文件夹权限chmod 777还是不行,最后还是用MobaXterm_Personal_10.9才解决,我呜呜呜~~~~

 

安装包的解压
安装包所在的目录下,运行tar xzvf mpich-x.x.x.tgz

 tar xzvf mpich.tar.gz

切换到解压出来的包目录下
cd mpich-x.x.x

cd mpich-1.2.7p1/

configure配置编译环境,我这里为它选择了一个安装路径。
./configure --prefix=/usr/local/mpich-x.x.x

./configure --prefix=/usr/local/mpi -rsh=ssh --disable-weak-symbols

缺少编辑器,按需求确认安装C、C++、F77和F90编译器即可。

yum install gcc gcc-c++ gcc-fortran kernel-devel -y

./configure --prefix=/usr/local/mpi -rsh=ssh --disable-weak-symbols

 

安装

make

make install

至此,mpich安装完成

下一步就要配置环境变量了(其实主要就是你要扒拉到你的安装文件夹下,看哪些文件夹比较重要的,要想办法添加到PATH中去。比如/usr/local/mpi/bin这个文件夹等等。)

分别将/usr/local/mpi/bin和/usr/local/mpi/man加入环境变量PATH和MANPATH中,只需要在目录/etc/profile.d中创建mpich.sh和mpich.csh这两个文件即可,它们分别对Bourne shell和C shell起作用,这两个文件的内容如下:

mpich.sh

 

mpich.csh

使该配置文件生效

cd /etc

source /etc/profile

授予全部权限(简单粗暴。。)

至此,环境变量的配置完成。

3.开发第一个MPI程序

太激动了,,,呜呜呜,要哭liao

在当前文件夹里,建立一个 test.c文件,并编写代码

或者

在解压出来的MPI安装目录下有个examples文件夹,里面有若干示例程序可供测试。

  • 编译测试
    使用cd命令切换到示例程序文件夹下,使用mpicc sendmany.c -o sendmany进行编译。
  • 运行测试

mpirun -np N sendmany
这里的N改成一个常数,表示你要用来运行这个并行程序的节点。如果不是在集群环境上,一个CPU一个节点,进程数也就是一个,本地机子默认的编号就是0。你N的不同就是把程序跑N遍。

 

#include"mpi.h"
#include<stdio.h>
#include<math.h>
void 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);
        printf("Hello World!Process %d of %d on %s\n,myid,numprocs,processor_name");
        MPI_Finalize();
}

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值