MPI并行计算环境的建立
MPI环境搭建
MPI 并行环境的搭建1、在计算机中,安装两个CentOS系统2、[root@node1 etc]# ifconfig #查看ip192.168.241.128[root@node2 etc]# ifconfig192.168.241.1293、互ping[root@node1 etc]# ping 192.168.241.129 #测试网络是否联通 [root@node2 etc]# ping 192.168.241.1284、修改/etc/hosts文件,在节点设置节点名称192.168.241.128 node1192.168.241.129 node2[root@node1 etc]# source /etc/hosts[root@node2 etc]# source /etc/hosts5、各个节点是否互通[root@node1 etc]# ping node2 #测试主机名修改是否成功[root@node2 etc]# ping node16、关闭iptables防火墙[root@node1 etc]# serviceiptables stop[root@node2 etc]# serviceiptables stop在各个节点设置iptables 防火墙开机关闭[root@node1 usr]# chkconfigiptables off #设置iptables开机关闭 [root@node2 usr]# chkconfigiptables off #设置iptables开机关闭7、在各个节点创建共享目录[root@node1 etc]#mkdir /usr/cluster[root@node2 etc]#mkdir /usr/cluster在node1上修改/usr/cluster为777[root@node1 etc]#chmod –R 777 /usr/cluster8、挂在nfs文件系统/etc/exports文件配置在node1(主节点)节点配置[root@node1 etc]# vi /etc/exportsusr/cluster 192.168.241.128(rw)/usr/cluster 192.168.241.129(rw)启动nfs服务在node1节点执行[root@node1 usr]# yum install nfs-utilsrpcbind #安装nfs[root@node1 usr]# service rpcbind start #启动rpc[root@node1 usr]# service nfs start #启动nfs服务[root@node1 usr]# chkconfigrpcbind on #设置rpcbind开机启动[root@node1 usr]# chkconfignfs on #设置nfs开机启动在node2节点执行[root@node2 usr]# yum install nfs-utilsrpcbind #安装nfs[root@node2 usr]# service rpcbind start #启动服务[root@node2 usr]# service nfs start #启动nfs服务[root@node2 usr]# chkconfigrpcbind on #设置rpcbind开机启动[root@node2 usr]# chkconfignfs on #设置nfs开机启动9、查看服务器已有的共享目录查看node2的共享目录[root@node2 usr]# showmount -e 192.168.241.129Export list for 192.168.241.129:/usr/cluster 192.168.241.129,192.168.241.128挂在共享目录node2的共享目录挂在node1[root@node1 etc]# mount -t nfs 192.168.241.129:/usr/cluster /usr/cluster设置文件系统启动时自动挂载在node2的/etc/fstab文件下添加下边代码[root@node2 etc]# vi /etc/fstab192.168.241.128:/usr/cluster /usr/cluster nfsdefaults 0 010、配置ssh实现MPI节点的无密码登陆在各个节点上操作[root@node1 ~]# cd ~/.ssh/[root@node1 .ssh]# ssh-keygen -t rsa #一直按回车键会产生一个私钥id_rsa 和公钥id_rsa.pub[root@node2 ~]# cd ~/.ssh/[root@node2 .ssh]# ssh-keygen -t rsa #一直按回车键会产生一个私钥id_rsa 和公钥id_rsa.pub将各个节点的公钥合并到authorized_keys文件[root@node1 .ssh]# cat id_rsa.pub >>authorized_keys[root@node1 .ssh]# ssh root@node2 cat /root/.ssh/id_rsa.pub >>authorized_keys将authorized_keys拷贝到各个节点[root@node1 .ssh]# scpauthorized_keys root@node2:/root/.ssh/[root@node1 .ssh]# scpknown_hosts root@node2:/root/.ssh/无密钥测试[root@node1 .ssh]# ssh node2 #node1登陆到node2[root@node2 .ssh]# ssh node1 #node2登陆到node111、安装MPICH2(在各个节点都需要操作)将下载的mpich-3.2.tar.gz文件拷贝到/usr/src目录下[root@node2 src]# tar -zxvf mpich-3.2.tar.gz #解压文件[root@node2 src]# cd mpich-3.2配置安装路径最新版本mpich3的进程管理默认使用hydra[root@node2 mpich-3.2]# yum -y install gcc-c++ #安装c++编译器[root@node2 mpich-3.2]# mkdir /usr/cluster/mpich3 #创建mpich3目录[root@node2 mpich-3.2]# ./configure --prefix=/usr/cluster/mpich3/ --with-pm=hydra --disable-fortran #配置安装路径[root@node2 mpich-3.2]# make #编译[root@node2 mpich-3.2]# make install #安装在node1里执行[root@node1 ~]# vi .bashrc #添加mpich3的路径export PATH=$PATH:/usr/cluster/mpich3/bin[root@node1 ~]# source .bashrc #配置生效在node2里执行[root@node2 ~]# vi .bashrc #添加mpich3的路径export PATH=$PATH:/usr/cluster/mpich3/bin检测是否配置成功[root@node2 ~]# which mpicc #显示mpicc的路径[root@node2 ~]# which mpiexec #显示mpiexec的路径11、配置hostfile文件在当前用户主目录下建立并编辑配置文件hostfile。
linux集群中MPI的并行计算环境简单配置
/n/20090826/4253.html一、集群和Linux上的集群解决方案集群计算机是指用一组联网的PC或工作站来搭建成的,提供比单个PC(节点)计算性能高得多的计算机。
说其是计算机,其实是针对所提供出来的服务而言的,或者说是逻辑上来说的。
集群计算机的主要优势就是成本,相同的计算能力下,其成本只有传统大型机的十分之一,在全球计算机TOP500中,集群计算机的比重越来越大,近两年的比重超过了80%。
特别是对中小企事业应用,实验研究和教学有很大的竞争力。
集群系统(Cluster)主要解决下面几个问题:1.高可靠性(HA)。
利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。
2.高性能计算(HP)。
充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,物理与化学分析等。
3.负载平衡。
即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
在实际应用中,最常见的情况是利用集群解决负载平衡问题,比如用于提供WWW服务。
在这里主要展示如何使用LVS(Linux Virtial Server)来实现实用的WWW负载平衡集群系统关于集群计算机的操作系统,在TOP500中现在主要的操作系统都有身影,但是应用最多的是LINUX操作系统。
这首先利益于LINUX的开放源代码,使得其有很高的可制定性,可以根据不同的硬件和应用环境作出相应的修改,其次,LINUX也有很高的稳定性,而且不乏商业支持。
为了降低程序开发的难度和提高程序的可移植性,目前基于LINUX的集群计算环境主要是通过配置MPI(Message Passing Interface)环境可实现的。
这也是目前比较成熟的应用模式。
因此,本文主要讲解LINUX下的集群环境配置的要求和MPI的配置。
LINUX集群环境的配置主要有以下几个部分:<!--[if !supportLists]-->1.<!--[endif]-->MPI并行计算环境的安装和配置<!--[if !supportLists]-->2.<!--[endif]-->计算节点之间的无密码访问<!--[if !supportLists]-->3.<!--[endif]-->NFS共享文件系统的配置//注:在集群配置过程中,MPI运行环境的安装和配置是必要的,至于计算节点之间的无密码访问和NFS共享,则是在运算效率和文件管理上对高性能计算提出的要求。
mpi并行计算教程与实例
mpi并行计算教程与实例MPI(Message Passing Interface)是一种用于编写并行计算程序的标准接口。
它是一种消息传递编程模型,能够在分布式内存系统中实现多个进程之间的通信和协调。
MPI并行计算的教程与实例,将为读者介绍MPI的基本概念、使用方法和相关实例,帮助读者快速入门并掌握MPI并行计算的技巧。
一、MPI的基本概念MPI是一种标准接口,提供了一组函数和语义规范,用于编写并行计算程序。
在MPI中,进程是程序的基本执行单元,每个进程都有自己的地址空间和计算资源。
进程之间通过消息进行通信,可以发送和接收消息,实现进程之间的数据交换和协调。
MPI中有两个基本的概念:通信域和通信操作。
通信域定义了一组进程的集合,这些进程之间可以进行消息的发送和接收。
通信操作是指进程之间进行消息传递的操作,包括发送、接收、同步等。
二、MPI的使用方法在MPI编程中,首先需要初始化MPI环境,然后确定通信域和进程之间的通信拓扑关系。
之后,可以使用MPI提供的函数进行消息的发送和接收,实现进程之间的通信和协调。
最后,需要在程序结束时释放MPI环境。
MPI提供了丰富的函数库,可以实现不同类型的通信和操作。
例如,MPI_Send函数可以将消息发送给指定的进程,MPI_Recv函数可以接收来自其他进程的消息。
此外,MPI还提供了一些高级函数,如MPI_Bcast和MPI_Reduce,用于广播和归约操作。
三、MPI的实例下面以一个简单的例子来说明MPI的使用方法。
假设有一个数组,需要计算数组中元素的总和。
可以使用MPI将数组分成若干部分,分配给不同的进程进行计算,最后将结果汇总得到最终的总和。
需要初始化MPI环境,并获取进程的总数和当前进程的编号。
然后,将数组分成若干部分,每个进程只计算分配给自己的部分。
计算完成后,使用MPI_Reduce函数将各个进程的计算结果进行归约,得到最终的总和。
最后,释放MPI环境。
MPI并行程序设计
MPI并行程序设计MPI并行程序设计引言MPI(Message Passing Interface)是一种常用的并行计算编程模型,用于在分布式计算环境中实现并行程序设计。
MPI提供了在多个进程之间进行通信和同步的机制,使得程序能够充分利用集群或超级计算机的并行性能。
本文将介绍MPI的基本概念和使用方法,并帮助读者了解如何进行MPI并行程序设计。
MPI基本概念MPI的核心思想是将计算任务划分为多个子任务,并将这些子任务分发给不同的进程进行并行计算。
MPI使用消息传递的方式来实现进程之间的通信和同步。
以下是一些MPI的基本概念:进程通信在MPI中,每个并行计算的进程都有一个唯一的标识符,称为进程号(rank)。
进程之间可以使用通信操作进行消息传递,包括发送消息(send)、接收消息(receive)和同步(synchronize)等操作。
点对点通信点对点通信是指在两个进程之间进行消息传递,包括发送方和接收方。
发送方使用`MPI_Send`函数发送消息,接收方使用`MPI_Recv`函数接收消息。
广播通信广播通信是指一个进程向所有其他进程发送消息的操作。
发送方使用`MPI_Bcast`函数广播消息,接收方使用`MPI_Recv`函数接收消息。
归约操作归约操作是指将一组数值合并为一个数值的操作,如求和、求最大值等。
MPI提供了多种归约操作,包括`MPI_Reduce`和`MPI_Allreduce`。
并行计算模式MPI支持多种并行计算模式,包括主从模式、对等模式等。
在主从模式中,一个进程作为主进程,负责分发任务和收集结果;其余进程作为从进程,负责执行分配的子任务。
在对等模式中,所有进程都具有相同的任务和贡献。
MPI程序设计步骤编写MPI并行程序的一般步骤如下:1. 初始化MPI环境:使用`MPI_Init`函数初始化MPI环境,并获取进程数量和进程编号等信息。
2. 分配任务:根据进程编号和任务数量,将总计算任务划分为子任务,并分发给各个进程。
MPI综合实验报告
MPI综合实验报告一、实验目的本次实验旨在探究MPI并行计算技术在多节点集群中的应用,并通过编写相关代码实现一个简单的并行计算任务,验证MPI的计算能力和效果。
二、实验原理MPI(Message Passing Interface)是一种并行计算中进程间通信的标准接口。
MPI通过发送和接收消息来实现进程之间的通信,协调各个计算节点的工作。
一般而言,MPI程序由多个进程组成,每个进程可以独立地执行计算任务,当需要进行通信时,进程可以通过MPI提供的接口来发送和接收消息。
三、实验过程1.配置MPI环境在实验开始前,需要在多个节点上安装MPI环境,并确保各节点之间能够正常通信,可以互相发送和接收消息。
2.编写代码首先,需要编写一个主进程(通常为进程0)和多个子进程参与计算的代码。
主进程负责将计算任务分配给子进程,并收集子进程的计算结果。
子进程则负责进行具体的计算任务。
以下是一个简单的示例代码:```pythonfrom mpi4py import MPIif rank == 0:#主进程负责任务分配data = [i for i in range(size-1)] # 分配给每个子进程的数据for i in range(1, size):#主进程接收结果result = []for i in range(1, size):print("Result:", result)else:#子进程接收任务数据#子进程进行计算result = data * 2#子进程发送计算结果```以上代码使用了mpi4py库来实现MPI的功能。
在主进程中,首先准备要分配的数据,然后将每个子进程的数据发送给相应的子进程,并接收子进程的计算结果。
在子进程中,首先接收来自主进程的数据,然后进行计算,并将计算结果发送给主进程。
3.运行实验在配置好MPI环境和编写好代码后,将代码保存并上传到各个节点上。
然后,在主节点上执行以下命令来运行程序:``````其中,`-np 5`表示使用5个进程来进行计算。
基于MPI的网络并行计算系统构建及分析
群的体系结构 如图 1 所示.
i
[ 巫[] _
而蕊
网关
1 网络并行计算 系统 的体 系结构
网络并 行 计 算 是 一 种 并 行 计 算 技 术 , 它 通 过 网络连 接 多个 计 算 机 系统 来 实 现 高 效 的 并 行 处理 任务 . 网络并 行计 算能 够充 分利 用 整个 系 统 的资 源进 行统 一调 度 和协调 处 理 , 目前 并行 是
算任务…. 此庞大计算 任务 的解 决依靠单 处 如
理 器是 无 法 实 现 的. 在这 些 领 域 , 切 需 要 高效 迫 的计 算 方 法 . 此 同 时 , 与 随着 P 机 性 能 的提 高 C 和 网 络 产 品 的 更 新 换 代 使 一 种 新 的 计 算 形
式 —— 网络并 行计 算 应运 而生 . 网络并行 计 算是
中图 分 类 号 : T 3 3 P 9
文 献 标 识 码 : A
现 代计 算 技 术 显著 地 促 进 了科 学 计 算 的发
系统 . 群 中 的各 台计 算 机 之 间联 系 紧密 , 某 集 在 种 程度 上 可将 整个 系统理 解成 一 台计算 机 . 群 集
中的计 算节 点 可 以是 P C或 工 作 站 , 一个 节 点 每
是将一组计算机连接起来实现高效并行计算 的
收稿 日期 : 2 1 0 1—1 2—2 2
作者简介 : 张克非( 9 9一) 满 , , 17 , 女 辽宁本溪人 , 讲师 , 硕士 , 主要从事并行计算方面 的研究
沈
阳
化
工
大
学
学
报
表, 而并 不 特 指某 一 个对 它 的具体 实 现 . 今 为 迄
基于MPI并行编程环境简述
基于MPI并行编程环境简述MPI并行编程环境是一种并行编程解决方案,它被广泛应用于高性能计算领域。
本文将对MPI并行编程环境做一个简单的介绍,包括MPI的概念、MPI的基本编程模式、MPI的特点和应用场景等方面。
最后还将介绍一些MPI编程中要注意的问题。
一、MPI的概念MPI是Message Passing Interface的缩写,意思是“消息传递接口”,它是一种并行计算环境的标准化接口,并且被广泛应用于高性能计算领域。
MPI允许程序员编写MPI应用程序来在多个进程之间传递消息,并对应用程序进行并行化处理。
MPI定义了一套通信协议,使得单个进程可以通过网络连接与其他进程进行通信。
MPI支持多种编程语言,包括C、C++、Fortran等。
MPI的实现通常包括一个标准库和一个运行时系统,它们提供了一系列函数和工具,用于支持消息传递协议和进程管理。
二、MPI的基本编程模式MPI的基本编程模式是消息传递模型,它通过传递消息实现进程之间的通信和同步。
MPI提供了一套通信协议,包括点对点通信和集合通信两种方式,以及同步通信和异步通信两种方式。
在点对点通信中,发送方将消息传递给接收方;在集合通信中,一组进程相互交换数据。
同步通信要求发送方等待接收方的响应,而异步通信则可以在发送消息之后立即返回并继续执行。
三、MPI的特点MPI具有以下几个特点:1. 并行性:MPI可以同时在多个进程之间完成任务,并能够将运算分解成多个独立的计算单元来并行执行。
2. 可移植性:MPI的标准化接口使得程序员可以跨平台编写MPI应用程序,而无需考虑底层计算机架构和操作系统的区别。
3. 可扩展性:MPI支持将计算任务分配到大规模的计算资源上,能够有效地扩展计算能力。
4. 通信效率高:MPI的通信协议具有高效的性能,支持传输大量的数据,因此可以在高速网络上实现高速通信。
四、MPI的应用场景MPI主要应用于高性能计算领域,可以用于大规模数值模拟、数据挖掘、机器学习等任务。
实验四MPI环境构建及程序设计
实验四MPI环境构建及程序设计MPI(Message Passing Interface)是一种并行计算通信标准,用于在并行计算环境中进行进程间通信。
构建MPI环境并进行程序设计是实现高性能计算的关键步骤之一、本实验将介绍如何构建MPI环境,并通过一个简单的程序设计来演示MPI的使用。
首先,我们需要在计算机上安装MPI环境。
MPI有多种实现,例如OpenMPI、MPICH和Intel MPI等。
这里我们以OpenMPI为例进行环境构建。
2. 安装OpenMPI:打开终端或命令提示符,进入到OpenMPI安装包所在目录,并执行以下命令进行安装:```$ tar xf openmpi-x.x.x.tar.gz # 解压安装包(x.x.x为安装包版本号)$ cd openmpi-x.x.x # 进入解压后的目录$ ./configure --prefix=/usr/local/openmpi # 配置安装路径$ make # 编译$ sudo make install # 安装(需要管理员权限)```3.配置环境变量:```export PATH=/usr/local/openmpi/bin:$PATHexportLD_LIBRARY_PATH=/usr/local/openmpi/lib:$LD_LIBRARY_PATH ```执行以下命令使环境变量生效:```$ source ~/.bashrc # 或 source ~/.bash_profile```4.验证MPI环境:执行以下命令验证MPI环境是否成功安装:```$ mpiexec --version```如果输出了MPI版本信息,则说明安装成功。
接下来,我们将通过一个简单的MPI程序来演示MPI的使用。
以下是一个求解圆周率的MPI程序示例:```c#include <stdio.h>#include <stdlib.h>#include <mpi.h>int main(int argc, char *argv[])int rank, size;double pi = 0.0;double sum = 0.0;MPI_Init(&argc, &argv);srand(rank);for (int i = start; i < end; i++)double x = (double)rand( / RAND_MAX;double y = (double)rand( / RAND_MAX;if (x * x + y * y <= 1.0)sum += 1.0;}}MPI_Reduce(&sum, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);if (rank == 0)printf("Approximated Pi: %f\n", pi);}MPI_Finalize(;return 0;```该程序使用蒙特卡洛方法求解圆周率。
MPI的搭建及OpenMP的配置实验指导书
MPI的搭建及OpenMP的配置实验指导书1.MPI简介消息传递接口(Message Passing Interface,MPI)是目前应用较广泛的一种并行计算软件环境,是在集群系统上实现并行计算的软件接口。
为了统一互不兼容的的用户界面,1992年成立了MPI委员会,负责制定MPI的新标准,支持最佳的可移植平台。
MPI不是一门新的语言,确切地说它是一个C和Fortran的函数库,用户通过调用这些函数接口并采用并行编译器编译源代码就可以生成可并行运行的代码。
MPI的目标是要开发一个广泛用于编写消息传递程序的标准,要求用户界面实用、可移植,并且高效、灵活,能广泛应用于各类并行机,特别是分布式存储的计算机。
每个计算机厂商都在开发标准平台上做了大量的工作,出现了一批可移植的消息传递环境。
MPI吸收了它们的经验,同时从句法和语法方面确定核心库函数,使之能适用于更多的并行机。
MPI在标准化过程中吸收了许多代表参加,包括研制并行计算机的大多数厂商,以及来自大学、实验室与工业界的研究人员。
1992年开始正式标准化MPI,1994年发布了MPI的定义与实验标准MPI 1,相应的MPI 2标准也已经发布。
MPI吸取了众多消息传递系统的优点,具有很好的可以执行、易用性和完备的异步通信功能等。
MPI事实上只是一个消息传递标准,并不是软件实现并行执行的具体实现,目前比较著名的MPI具体实现有MPICH、LAM MPI等,其中MPICH是目前使用最广泛的免费MPI系统,MPICH2是MPI 2标准的一个具体实现,它具有较好的兼容性和可扩展性,目前在高性能计算集群上使用非常广泛。
MPICH2的使用也非常简单,用户只需在并行程序中包含MPICH的头文件,然后调用一些MPICH2函数接口将计算任务分发到其他计算节点即可,MPICH2为并行计算用户提供了100多个C和Fortran函数接口,表1-1列出了一些常用的MPICH2的C语言函数接口,用户可以像调用普通函数一样,只需要做少量的代码改动就可以实现程序的并行运行,MPICH并行代码结构如图1-1所示。
mpi基本用法 -回复
mpi基本用法-回复MPI基本用法MPI(Message Passing Interface)是一种常用的并行计算编程模型,它允许在分布式内存系统中进行进程间通信。
MPI被广泛应用于科学计算、高性能计算以及大规模数据处理等领域。
本文将介绍MPI的基本用法,为大家一步一步解释如何使用MPI进行并行计算。
第一步:MPI的安装和设置1.1 安装MPI库首先,要在计算机上安装MPI库。
常用的MPI库包括Open MPI、MPICH 和Intel MPI等。
根据操作系统的不同,可以选择合适的MPI库进行安装。
1.2 环境变量设置安装完成后,需要设置相应的环境变量。
将MPI的安装目录添加到系统路径(PATH)中,以便系统可以找到MPI的执行程序。
同时,还需要设置LD_LIBRARY_PATH环境变量,以指定MPI库的位置。
第二步:MPI的编程模型MPI的编程模型基于进程间的消息传递。
每个进程都有自己的地址空间,并且可以通过MPI的函数进行相互通信。
MPI定义了一系列的函数和数据类型,用于实现进程间的消息传递和同步操作。
2.1 初始化MPI环境在开始使用MPI之前,需要调用MPI的初始化函数来建立MPI的运行环境。
可以通过以下代码来完成初始化操作:c#include <mpi.h>int main(int argc, char argv) {MPI_Init(&argc, &argv);TODO: MPI代码MPI_Finalize();return 0;}在这段代码中,`MPI_Init()`函数用于初始化MPI环境,`MPI_Finalize()`函数用于关闭MPI环境。
`argc`和`argv`是命令行参数,通过它们可以传递程序运行所需的参数。
2.2 进程间通信MPI提供了一系列的通信函数,用于实现进程间的消息传递。
常用的通信函数包括`MPI_Send()`、`MPI_Recv()`、`MPI_Bcast()`和`MPI_Reduce()`等。
c++的mpi编程
c++的mpi编程C++的MPI编程是一种用于实现并行计算的方法。
MPI(Message Passing Interface)是一种通信协议,它允许在分布式计算系统中进行高效的消息传递。
在C++中使用MPI编程,可以充分利用多核处理器和集群计算机等并行资源。
以下是C++ MPI编程的基本步骤:1. 配置MPI环境:首先,需要在操作系统上安装MPI库。
安装完成后,可以通过编译器参数或环境变量指定MPI库的路径。
2. 编写程序:编写一个C++程序,使用MPI库提供的函数进行通信和同步。
常见的MPI函数包括发送和接收消息的函数(如MPI_Send 和MPI_Recv),以及用于进程间通信的函数(如MPI_Comm_size和MPI_Comm_rank)。
3. 分配计算资源:在程序中,使用MPI_Comm_size函数获取进程数量,然后根据问题规模和计算资源分配任务。
可以使用MPI_Comm_rank函数获取当前进程的编号。
4. 初始化MPI:在程序开始时,使用MPI_Init函数初始化MPI库。
在程序结束时,使用MPI_Finalize函数关闭MPI库。
5. 编写主函数:在主函数中,使用MPI函数进行进程间通信和数据交换。
例如,可以使用MPI_Send和MPI_Recv函数实现数据的发送和接收。
6. 编写并行区域:在并行区域中,使用MPI_Barrier函数同步进程。
这样可以确保所有进程在执行并行区域之前达到相同的进度。
7. 结束MPI:在程序结束时,使用MPI_Finalize函数关闭MPI库。
以下是一个简单的C++ MPI编程示例:```cpp#include <iostream>#include <mpi.h>int main(int argc, char *argv[]) {// 初始化MPI库MPI_Init(&argc, &argv);// 获取进程数量和当前进程编号int size, rank;MPI_Comm_size(MPI_COMM_WORLD, &size);MPI_Comm_rank(MPI_COMM_WORLD, &rank);// 输出进程信息std::cout << "Hello, I am process " << rank << " of " << size << "." << std::endl;// 结束MPI库MPI_Finalize();return 0;}```这个示例程序将输出各个进程的编号和总进程数。
安装和设置mpi并行环境
安装和设置mpi并行环境3月31日,系统(主节点)因为安装mpich崩溃,开始重新安装系统和部署globus,此次安装决定先安装mpich,成功之后再按照globus。
经过反复试验,(花了不少心思去找版本问题,其实理论上mpich不应该有这么多版本问题的,猜想也有可能是之前与globus冲突所以系统崩溃了),觉得以下的版本是比较适合的,并且已经安装成功。
所以赶紧把这部分内容写下来备份,免得下次到处找。
安装之前请确认以下几件事:linux版本:redhat9.0,内核信息与之前相同所用mpich版本:mpich2-1.0.8安装之前,设置hostname和ip地址,与之前一样系统已经安装了gcc安装过程中使用root用户安装mpich步骤:1,创建SSH信任连接(在root目录下)(1)更改hosts文件,加入需要进行计算的机器#vi/etc/hosts打开hosts文件,更改如下:127.0.0.1 localhost.localdomain localhost 192.168.1.100 192.168.1.101 .(2)在生成SSH秘钥对//一路回车即可产生.ssh文件[root@chunli root]#ssh-keygen-t rsa Generating public/private rsa key pair.Enter file in which to save the key(/root/.ssh/id_rsa):Enter passphrase(empty for no passphrase):Enter same passphrase again:Your identification has been saved in/root/.ssh/id_rsa.Your public key has been saved in/root/.ssh/id_rsa.pub.The key fingerprint is:6c:61:a8:3f:a2:e0:9c:e7:8a:1b:49:76:a1:ce:e0:e9***************//查看是否有.ssh文件夹[root@chunli root]#ls-a..fonts.cache-1.gtkrc.recently-used..gconf.gtkrc-1.2-gnome2.rhn-applet.conf anaconda-ks.cfg.gconfd.ICEauthority.ssh.bash_history.gnomeinstall.log.tcshrc.bash_logout.gnome2install.log.syslog.viminfo.bash_profile.gnome2_private.metacity.Xauth ority.bashrc.gnome-desktop.nautilus.Xresources.cshrc.gstreamer.pyinput.xsession-errors(3)进入.ssh目录[root@chunli root]#cd.ssh(4)生成authorized_keys文件[***************]#cpid_rsa.pubauthorized_keys(6)建立本身的信任连接//按提示输入yes(三个字母要打全)[***************]#cd.[root@chunliroot]#The authenticity of host'(127.0.0.1)'can't be established.RSA key fingerprint is ec:c9:1c:5a:d6:98:5d:48:fd:7b:58:b3:b3:05:05:78.Are you sure you want to continue connecting(yes/no)?yes Warning:Permanently added''(RSA)to the list of known st login:Wed Mar 31 18:55:59 2010(7)设置第二个节点(grid1的root目录下)#ssh-keygen-t rsa生成.ssh文件夹//注意不要多键入空格从拷贝。
用mpi设计一个并行计算程序的大体思路
用mpi设计一个并行计算程序的大体思路引用冷冰川的[资料]用mpi设计一个并行计算程序的大体思路转载地址:这个是我去年做的一个mpi并行计算的软件设计。
贴出来给大家一个参考,用mpi做东西的同学们可以讨论一下。
我们使用的并行计算环境是mpich2,这是mpi的一个实现。
mpi本身是基于信息传递的,所以各个工作节点虽然是异步的,但是通过消息,可以在一定程度上同步各个节点,进行控制。
设计上,比较自然的是把节点分成两类,一个控制节点和多个计算节点,控制节点负责分配任务,对任务执行情况进行监控,对各个计算节点得到的部分结果进行合并和优化。
计算节点比较简单,只是执行被分配到的部分计算任务,然后把结果返回给控制节点。
是否需要节点分类取决于计算任务的性质,现实生活中的多数计算任务都是需要把部分结果进行合并的。
所以节点分类是一个好的设计,至于控制节点的数目不一定局限于一个,可以做成多个,但是就我的具体应用来看,没有这个必要。
另外一个设计的要点在于消息的设计。
本身mpi支持传递消息参数有很多种,但是为了更好的通用性和较小的对并行计算平台依赖性,我还是选择了xml作为消息数据的格式,这样我们只需要传递字符串消息就可以了。
这样做的好处是显然的,缺点在于消息的发送方需要编码数据,接受方需要解码数据,效率可能略低。
另外对于错误消息和正常消息在设计上有所区分。
搞清楚以上两个设计点,基本的设计就出来了。
消息部分:基本的消息类层次结构应该是BaseMessage-StringMessage-XmlMessage-具体的Message其中BaseMessage只有一个功能,就是可以指定接收或者发送的目的方。
另外它还定义了消息内容的接口。
子类要实现这些接口来提供不同格式的消息内容。
代码:classBaseMessage{public://返回消息的的源或目的intFrom()const;int To()const;//设置消息的源或目的void From(int from);void To(int to);//取消息的内容virtualconstchar*Content()const=0;//设置消息的内容virtual bool Content(constchar*content)=0;//取消息的长度virtual int Length()const=0;.};StringMessage比较简单,就是字符串消息。
基于PC集群的MPI并行环境的搭建
2012.448基于PC 集群的 MPI 并行环境的搭建希润高娃内蒙古师范大学计算机与信息工程学院 内蒙古 010022摘要:集群是充分利用计算资源的一个重要概念,PC 集群是最易构建的分布式并行计算环境。
MPI 是应用最广的并行程序设计平台。
本文通过实例阐述PC 集群及PC 集群上的MPI 并行计算环境的搭建。
关键词:集群;PC 集群;MPI ;并行0 引言高性能仍是计算机领域的重要目标。
并行计算的不断发展推动着高性能计算的发展,利用集群系统的并行计算技术已被认为是未来解决大数据量问题或商业计算的导向。
集群能够充分利用现有的闲置计算机资源,而且还能够使用较低配置的软硬件,来实现较高性能的计算。
随着处理器技术和高性能网络技术的飞速发展,以及软件工具的改善,PC 的性能不断的提高,价格越来越廉价,性价比已远远优于工作站,而PC 集群也成为了高性价比的并行计算资源。
所以基于PC 的并行计算环境及其上的并行算法的研究是很有价值和意义的。
MPI(Message Passing Interface)是基于消息传递编写并行程序的一种用户界面,是一个并行函数库的标准,是可移植的标准平台。
MPI 具有内定和用户自定义的数据汇集操作功能,可以把大量数据进行打包后传输;能有效地管理消息、缓存区,具有结构化缓存,扩充数据类型及异构性,能实现完全异步的点对点通信,发送与接收操作可以完全与计算操作交叉进行。
MP 移植性好、功能强大、效率高、硬件平台支持度高等多种优点,使它成为了研究和应用的重要并行环境。
1 集群1.1 集群系统结构集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性和可用性的服务平台,属于分布式存储的并行计算机结构,典型的集群系统结构如图1所示。
图1 集群系统结构图集群通过计算机高速网络将一群工作节点连接起来,充分利用各个节点的各种资源,统一调度,协调处理,以实现高效率的并行计算。
其高速网络可以是普通的局域网也可以是高速网络,而通信协议一般是TCP/IP 协议。
超级计算技术的开发环境搭建教程
超级计算技术的开发环境搭建教程超级计算技术在当代科学和工程领域中起着举足轻重的作用,它能够处理复杂的计算任务,并且在短时间内提供高性能的计算能力。
为了能够顺利进行超级计算的开发,我们需要搭建一个适合的开发环境。
本篇文章将为您提供超级计算技术的开发环境搭建教程。
第一步:选择合适的操作系统超级计算技术的开发环境可以在多种操作系统上进行搭建,如Linux、Windows等。
一般来说,Linux是超级计算开发的首选操作系统,因为它提供了更好的性能和稳定性。
您可以选择Ubuntu、CentOS等常用的Linux发行版,根据自己的需求进行选择。
第二步:安装必要软件在搭建超级计算的开发环境之前,需要安装一些必要的软件来支持相关功能。
首先,您需要安装一个适合的编程编辑器,如Sublime Text或者Visual Studio Code。
这些编辑器可以提供代码编写、调试和版本控制等功能,使得您能够高效地进行开发。
其次,您需要安装虚拟化软件,如VirtualBox或者VMware。
虚拟化软件可以创建虚拟机来模拟超级计算集群的环境,使得您能够在本地进行开发和测试。
此外,您还可以安装Docker来进行容器化开发,它可以更加方便地管理和部署多个计算节点。
另外,您还需要安装MPI库。
MPI是高性能计算中的一个重要技术,它提供了并行计算的接口和函数库。
您可以选择Open MPI或者MPICH等流行的MPI库,根据任务的需求进行选择。
第三步:配置开发环境一旦安装了必要的软件,您需要对开发环境进行详细配置。
首先,您需要设置编辑器的编码格式和插件。
根据您所选择的编辑器,在设置中将编码格式设置为UTF-8,并安装一些常用的插件来提高开发效率。
其次,您需要配置虚拟机或者容器的网络设置。
您可以设置静态IP地址或者使用DHCP来获取IP地址。
同时,您还需要配置网络连接和SSH访问,以便能够从本地连接到虚拟机或者容器。
最后,您需要配置MPI库和相关环境变量。
并行计算环境搭建
并行计算环境搭建一.搭建并调试并行计算环境MPI的详细过程。
1.首先,我们选择在Windows XP平台下安装MPICH。
第一步确保Windows平台下安装上了.net框架。
2.在并行环境的每台机子上创建相同的用户名和密码,并使该平台下的各台主机在相同的工作组中。
3.登陆到新创建的帐号下,安装MPICH软件,在选择安装路径时,每台机子的安装路径要确保一致。
安装过程中,需要输入一致的passphrase,也即本机的用户名。
4.安装好软件后,要对并行环境进行配置(分为两步):第一步:注册。
在每台机器上运行wmpiregister,按照提示输入帐号和密码,即本机的登录用户名和密码。
第二步:配置主机。
在并行环境下,我们只有一台主机,其他机子作为端结点。
运行主机上的wmpiconfig,在界面左侧栏目中选择TNP工作组,点击“select”按钮,此时主机会在网络中搜索配置好并行环境的其他机子。
配置好并行环境的其他机子会出现绿色状态,点击“apply”按钮,最后点击“OK”按钮。
5.在并行环境下运行的必须是.exe文件,所以我们必须要对并行程序进行编译并生成.exe文件。
为此我们选择Visual C++6.0编译器对我们的C语言程序进行编译,在编译过程中,主要要配置编译器环境:(1)在编译器环境下选择“工程”,在“link”选项卡的“object/library modules”中输入mpi.lib,然后点击“OK”按钮。
(2)选择“选项”,点击“路径”选项卡,在“show directories for”下选择“Include files”,在“Directories”中输入MPICH软件中“Include”文件夹的路径;在“show directories for”下选择“Library files”,在“Directories”中输入MPICH软件中Library文件夹的路径,点击“OK”。
(3)对并行程序进行编译、链接,并生成.exe文件。
MPI并行环境搭建及集群测试
MPI并行计算环境搭建以及集群测试
MPI作为一种通过消息传递进行并行计算的框架,在很多科学计算上有很重要的应用,这次因为GraphLab环境搭建时的需要,花了三个来小时的时间进行了初步的搭建摸索,感觉很
测试结果表明:对于间隔比较大时,明显集群快,但是间隔很小时,由于消息传递机制本身会耗时,因此集群效率不如单机。
部分参考资料链接:
/s/blog_5daeb2750100z3qx.html
/logwt/article/details/7325314
/lyq105/archive/2010/06/01/1749515.html
/ngvjai/article/details/8000045
补充:(可能会出现的问题,这是我在再次部署的时候出现的问题,第一次部署的时候太顺
原因:防火墙的问题,node2中防火墙禁止node9进行mpd连接
解决办法:我直接将node2中端口关掉了
或者你可以参考这里,这个连接的第二个问题就是教你如何解决防火墙禁止mpd访问的。
原因:当前的环境设置不能满足其性能的需求,需要对环境变量的设置进行改变。
解决办法:参考这里。
基于Intel的并行计算MPI环境搭建
MPI MPI FORTRAN+MPI C+MPI MPI FORTRAN77/C/Fortran90/C++ MPI IBM PC MS Windows Unix MPI Fortran IBM PC MS Windows UnixCentOS 6.4 sshd selinux Intel_ Fortran Intel_C++ Intel_ MPIIP IP /etc/hosts IP /etc/hosts1.10.12.190.183 dell2.10.12.190.187 lenovo3.……A 110.12.190.183 10.12.190.187 rsa|dsa rsa1.#ssh-keygen -t rsa # rsa rsa1.Generating public/private rsa key pair.2.Enter file in which to save the key (/root/.ssh/id_rsa):3.Enter passphrase (empty for no passphrase):4.Enter same passphrase again:5.Your identification has been saved in /root/.ssh/id_rsa.6.Your public key has been saved in /root/.ssh/id_rsa.pub.7.The key fingerprint is:8.b3:8e:87:44:71:67:81:06:d2:51:01:a4:f8:74:78:fd root@kvm.local9.The key's randomart image is:10.+--[ RSA 2048]----+11.| .o==oo.. |12.| . +o.+ o |13.| . + o+.o |14.| o o. . |15.| .. S E |16.| . o |17.| . .. |18.| .o. |19.| ... |20.+-----------------+id_rsa,id_rsa.pub~/.ssh/ id_rsa.pub .ssh cat id_rsa.pub >> ~/.ssh/authorized_keys ~/.ssh/ id_rsa.pub authorized_keys1.#chmod 600 authorized_keys.ssh1.#chmod 700 -R .sshssh-copy-id authorized_keys ssh-copy-id home ~/.ssh, ~/.ssh/authorized_keys1.#ssh-copy-id –i ~/.ssh/id_rsa.pub 10.12.190.187chmod 777.ssh-keygen .ssh id_rsa authorized_keys yes1.ssh node12.ssh node23.ssh node34.ssh node4NFSNFS IP 10.12.190.183 root1. /etc/exports/etc/exports1./home/cluster 10.12.190.183(rw,sync,no_root_squash)2./home/cluster 10.12.190.185(rw,sync,no_root_squash)3./home/cluster 10.12.190.187(rw,sync,no_root_squash)NFS IP 10.12.190.183 10.12.190.18510.12.190.185 /home/cluster1.# /etc/rc.d/init.d/rpcbind start NFSrpcbind NFS service portmapstartNFS NFS Client1.# /etc/rc.d/init.d/nfs start2.# chkconfig nfs onLinux NFS1.mkdir /usr/cluster1.showmount -e 10.12.190.183IP 10.12.190.1831.mount -t nfs 10.12.190.183:/home/cluster /home/clusterNFS 10.12.190.183 /home/cluster /etc/fstab NFS1.10.12.190.183:/home/cluster /home/cluster nfs defaults 0 0NFS /home/cluster NFS NFS Intel_C++1.#tar xvzf l_ccompxe_2013.1.117.tgz2.# cd composer_xe_2013.1.1173.#./install.sh1.#vi /etc/profilesource /opt/intel/composer_xe_2013.1.117/bin/iccvars.sh intel641.#which icc/opt/intel/composer_xe_2013.1.117/bin/intel64/iccIntel_Fortran1.#tar fxvz l_fcompxe_2013.1.117.tgz2.# cd l_fcompxe_2013.1.1173.#./install.sh1.#vi /etc/profilesource /opt/intel/composer_xe_2013.1.117/bin/compilervars.shintel641.#which ifort/opt/intel/composer_xe_2013.1.117/bin/intel64/ifortIntel_MPIFortran c++ MPI MPI mpich1.#tar fxvz l_mpi_p_4.1.3.045.tgz2.#cd l_mpi_p_4.1.3.0453.#./install.sh1.#vi /etc/profilesource /opt/intel/impi/4.1.3.045/bin64/mpivars.sh1.#which mpd2.#which mpicc3.#which mpiexec4.#which mpirun/etc/mpd.conf secretword=myword MPD_SECRETWORD=myword1.vi /etc/mpd.conf1.chmod 600 /etc/mpd.confroot .mpd.conf/root/mpd.hosts1.#vi mpd.hosts1.dell # 1 : dell:22.lenovo # 2MPI MPI1.# scp /opt/intel/impi/4.1.3.045/mic/bin/* dell:/bin/2.mpiexec 100% 1061KB 1.0MB/s 00:003.pmi_proxy 100% 871KB 871.4KB/s 00:004.……5.#scp /opt/intel/impi/4.1.3.045/mic/lib/* dell:/lib64/6.libmpi.so.4.1 100% 4391KB 4.3MB/s 00:007.libmpigf.so.4.1 100% 321KB 320.8KB/s 00:008.libmpigc4.so.4.1 100% 175KB 175.2KB/s 00:009.……10.# scp /opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/mic/* dell:/lib64/11.libimf.so 100% 2516KB 2.5MB/s 00:0112.libsvml.so 100% 4985KB 4.9MB/s 00:0113.libintlc.so.5 100% 128KB 128.1KB/s 00:0014.……intel/en-us/articles/using-the-intel-mpi-library-on-int el-xeon-phi-coprocessor-systems/opt nfs Intel_ Fortran Intel_C++ Intel_ MPI MPI MPIMPIMPI mpd mpiexec mpirun mpimpd1.# mpd &mpd1.# mpdtrace2.# mpdtrace -lmpd1.#mpdallexitmpi mpi (-o Hello1.#mpicc -o Hello Hello.c // Hello2.#mpicc cpi.c // a.out3.#mpdrun -np 4 ./a.out //-n -np4.#mpiexec [-h or -help or --help] //mpd1.# mpdboot -n process-num -f mpd.hostsprocess-num mpd.hostsmpi ssh rsh mpd-rsh ssh rsh1.#mpdboot --rsh=rsh -n process-num -f hostfile2. #mpdboot --rsh=ssh -n process-num -f hostfilempd1.#mpdallexitMPIEXEC|MPIRUN mpi1.#mpiexec -np 4 ./a.out //a.out a.out2. mpiexec -machinefile filename -np 4 ./a.out/s/blog_605f5b4f0100sw3j.html1.[root@kvm ~]# mpiexec -np 4 ./a.out2.Process 0 of 4 is on dell3.Process 2 of 4 is on dell4.Process 3 of 4 is on kvm.local5.Process 1 of 4 is on kvm.local6.pi is approximately 3.1415926544231274, Error is 0.00000000083333437.wall clock time = 0.037788source。
本实验要求学生搭建并行环境并运行计算π的程序。
本实验要求学生搭建并行环境并运行计算π的程序实验目的本实验的目的是为了让学生了解并行计算的概念和基本原理,掌握搭建并行环境的方法,以及能够编写并行程序并在并行环境中运行。
实验要求硬件要求本实验要求使用至少两台计算机,并能够通过网络进行连接。
建议使用至少4台计算机,以便更好地体现并行计算的效果。
软件要求本实验需要使用MPI(Message Passing Interface)并行编程库和编译器。
建议使用C语言进行编程。
实验步骤1.搭建并行环境首先,需要将所有计算机连接到同一个网络中,并且保证能够互相通信。
接着,需要安装MPI软件,并按照MPI的要求进行配置。
2.编写并行程序本实验要求使用MPI编写程序来计算π的值。
在编写程序之前,需要了解如何将一个计算任务分割成多个子任务,并且如何让不同的计算机并行地执行这些子任务。
程序的具体实现方式可以参考MPI的官方文档。
3.编译程序将编写好的程序进行编译,并生成可执行文件。
4.运行程序在并行环境中运行程序,观察实验结果。
实验结果通过本实验,学生可以了解并行计算的概念和基本原理,熟悉MPI库的使用方法,并且能够搭建并行环境并运行并行程序。
此外,学生还可以通过实验结果来比较串行计算和并行计算在计算π方面的效率区别,从而更好地理解并行计算的优势和应用场景。
实验总结通过本实验,学生可以逐步了解并行计算的概念和基本原理,掌握搭建并行环境,编写并行程序的方法,能够使用MPI库进行程序开发。
本实验的设计旨在让学生在实践中深入理解并行计算的概念和原理,并为今后进行高效的计算科学研究打下坚实的基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MPI并行计算环境的建立一、配置前的准备工作假设机群是3个节点。
1.安装Linux(CentOS 5.2)系统,并保证每个节点的sshd服务能正常启动。
笔者并没采用真实的3台机器,而是利用虚拟机(VMware Workstation6.5)在一台装有XP系统的机器上安装多个Linux系统进行模拟。
注意事项:(1)因为笔者采用mpich2-1.3.2p1.tar.gz,此版本对gcc、autoconf等软件包版本要求较高,为避免出错,尽量安装最新的Linux系统。
(2)在用VMware Workstation安装Linux系统时可能会遇到磁盘类型不兼容的问题,笔者采用的版本就出现了这样的问题,解决要点如下:a.启动Workstation选择创建定制的虚拟机;b.SCSI适配器类型选LSI Logic (Linux内核在2.4以下的选择BusLogic);c.选择虚拟磁盘类型(IDE)。
(3)安装VMware Workstation tools。
Linux系统启动后,选择菜单栏——虚拟机——安装VMware tools,按照提示将相应的安装包复制到你想要的目录下,执行命令:tar zxvf vmware-tools.tar.gzcd vmware-tools(进入解压目录)./install.pl(因版本不同,名字不一定相同,读者注意,执行名字类似的即可)2.为每个节点分配IP地址,IP地址最好连续分配,如192.168.1.2、192.168.1.3、192.168.1.4、......。
(不要分配192.168.1.1)3.配置/etc/hosts文件,该文件可以实现IP地址和机器的对应解析,所有节点的该文件均要按下面的内容修改:192.168.1.2 node1192.168.1.3 node2192.168.1.4 node3通过以上配置后节点之间能够通过各节点的机器名称相互访问。
例如,可以通过ping node2进行测试。
注意事项:该测试必须在关闭Linux防火墙的条件下进行,否则可能失败。
永久生效:chkconfig iptables on/off(重启生效)即时生效:service iptables start/stop(重启失效)二、挂载NFS文件系统由于MPICH的安装目录和用户可执行程序在并行计算时需要在所有节点保存副本,而且目录要相互对应,每次一个节点一个节点的复制非常麻烦,采用NFS文件系统后可以实现所有节点内容与主节点内容同步更新,并自动实现目录的对应。
NFS文件系统使得所有机器都能以同样的路径访问服务器上保存的文件,访问方法如同对本地文件的访问。
通常我们会将MPICH的安装目录及并行程序存放目录配置为NFS共享目录,这样可以省去将文件向各个节点复制的麻烦,大大提高工作效率。
NFS文件系统的配置方法示例如下(假设NFS服务器IP为192.168.1.2,配置需要在root 用户下完成)。
1.服务器端配置方法(下面的配置只在主节点进行)。
(1)/etc/exports文件配置在文件/etc/exports中增加以下几行:/usr/cluster 192.168.1.3(rw,sync,no_root_squash,no_subtree_check)/usr/cluster 192.168.1.4(rw,sync,no_root_squash,no_subtree_check)这几行文字表明NFS服务器向IP地址为192.168.1.3,192.168.1.4的2个节点共享其/usr/cluster 目录(目录必须存在),并使这些节点具有相应的权限(可查询相关的文档)。
如有更多的节点可按此方法填写。
(2)启动NFS服务启动NFS服务只需要以下两个命令:service portmap start注:在最新的内核中,NFS守护进程改为rpcbind,如是新内核,启动NFS守护进程的命令是“service rpcbind start”。
service nfs start到此IP为192.168.1.2的服务器已可以向其他两个节点提供/usr/cluster目录的文件共享。
2.客户端配置方法(需要在所有子节点做同样的配置)。
(1)建立共享目录。
建立与服务器相同的共享目录用于共享服务器文件:mkdir /usr/cluster(2)查看服务器已有的共享目录(这步可省略)。
showmount -e 192.168.1.2通过这条命令我们可以查看IP地址为192.168.1.2服务器可以共享的目录情况。
(3)挂载共享目录。
mount -t nfs 192.168.1.2:/usr/cluster /usr/cluster这一命令将NFS服务器192.168.1.2上的共享目录挂载到本地/usr/cluster目录下。
我们也可在所有子节点的/etc/fstab文件中输入以下的代码,使文件系统在启动时实现自动挂载NFS:192.168.1.2:/usr/cluster /usr/cluster nfs defaults 0 0至此我们已可以实现对NFS共享目录的本地访问,所有子节点的/usr/cluster文件夹都共享了NFS服务器的同名文件夹的内容,我们可以像访问本地文件一样访问共享文件。
MPICH的安装目录和用户存放并行程序的文件夹都需要实现NFS共享,从而避免了每次向各节点发送程序副本。
三、配置ssh实现MPI节点间用户的无密码访问由于MPI并行程序需要在各节点间进行信息传递,所以必须实现所有节点两两之间能无密码访问。
节点间的无密码访问是通过配置ssh公钥认证来实现的。
例如,对新用户user配置ssh公钥认证,先在node1上做以下操作。
(1)生成了私钥id_dsa和公钥id_dsa.pub,具体操作方法如下。
mkdir ~/.sshcd ~/.sshssh-keygen -t dsa系统显示一些信息,遇到系统询问直接回车即可。
(2)将该密钥用作认证,进行访问授权。
按如下命令在node1执行。
cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keyschmod go-rwx ~/.ssh/authorized_keys(3)将~/.ssh目录下的文件复制到所有节点。
scp -r ~/.ssh node2:scp -r ~/.ssh node3:(4)检查是否可以直接(不需要密码)登录其他节点。
ssh node1ssh node2如能两两之间不需要密码登录其他节点,则表明配置成功。
四、安装MPICH21.下载并解压MPICH2压缩包。
tar zxvf mpich2-1.3.2p1.tar.gz解压完成后将在当前目录生成一个MPICH文件目录。
2.进入MPICH解压后的目录,配置安装目录。
注意事项:最新版本mpich2的进程管理默认使用hydra,而不是mpd。
如果你要使用mpd,使用./configure --with-pm=mpd:hydra./configure --prefix=/usr/cluster/mpich2 --with-pm=mpd:hydra根据以上配置MPICH将安装在目录/usr/cluster/mpich2,并确保所有节点已建立针对该目录的NFS共享。
3.编译安装MPICH2。
进入解压后的MPICH文件目录,分别执行make和make install指令,这会花一段较长的时间。
4.在当前用户主目录下建立并编辑配置文件mpd.hosts。
将所有你允许访问本机进行并行计算的机器名填入,一行一个机器名,如果该机器上有两个CPU,就将它的名字加入两次,以此类型。
node1node2node3node4注意,文中包含自己的目的是为了在只有一个节点时也可以模拟并行计算环境。
5.配置环境变量。
编辑用户主目录下的~/.bashrc文件,增加一行:PATH="$PATH:/usr/cluster/mpich2/bin"这一行代码将MPI的安装路径加入用户的当前路径列表。
重新打开命令行窗口后生效。
6.启动mpd守护进程。
运行mpirun,首先要运行mpd。
在启动mpd守护进程前要在各个节点的安装目录(/usr/MPICHI-install/etc/mpd.conf)生成一个mpd.conf文件,内容为:secretword=123456其中,“123456”为识别口令,在所有节点中都建立该文件并保持口令一致,口令可自己设定。
进入/usr/MPICHI-install/etc/目录执行以下命令touch mpd.confchmod 600 mpd.confmpd &mpd &为启动本地mpd的命令,我们也可以采用以下命令同时启动mpd.hosts中所列节点的mpd。
mpdboot -n <节点个数> -f mpd.hosts这一命令将同时在mpd.hosts文件中所指定的节点上启动mpd管理器。
mpd启动后执行“mpdtrace -l”可以查看各个节点机器名。
7.编译、运行一个简单的测试程序cpi,这是一个MPICH自带的计算圆周率的并行示例程序,该例程在MPICH解压后的examples目录下。
运行命令如下:mpirun -np 3 ./cpimpi的编译命令为mpicc,如编译test.c可用如下命令:mpicc test.c -o testmpirun –np 3 ./test本文来自CSDN博客,转载请标明出处:/Leaderman_IT/archive/2011/03/03/6221427.aspx。