实验3安装MPICH
并行计算_实验三_简单的MPI并行程序及性能分析
并行计算_实验三_简单的MPI并行程序及性能分析一、实验背景和目的MPI(Massive Parallel Interface,大规模并行接口)是一种用于进行并行计算的通信协议和编程模型。
它可以使不同进程在分布式计算机集群上进行通信和协同工作,实现并行计算的目的。
本实验将设计和实现一个简单的MPI并行程序,并通过性能分析来评估其并行计算的效果。
二、实验内容1.设计一个简单的MPI并行程序,并解决以下问题:a.将一个矩阵A进行分块存储,并将其均匀分配给不同的进程;b.将每个进程分别计算所分配的矩阵块的平均值,并将结果发送给主进程;c.主进程将收到的结果汇总计算出矩阵A的平均值。
2.运行该MPI程序,并记录下执行时间。
3.对程序的性能进行分析:a.利用不同规模的输入数据进行测试,观察程序的运行时间与输入规模的关系;b. 使用mpiexec命令调整进程数量,观察程序的运行时间与进程数量的关系。
三、实验步骤1.程序设计和实现:a.设计一个函数用于生成输入数据-矩阵A;b.编写MPI并行程序的代码,实现矩阵块的分配和计算;c.编写主函数,调用MPI相应函数,实现进程间的通信和数据汇总计算。
2.编译和运行程序:a.使用MPI编译器将MPI并行程序编译成可执行文件;b.在集群上运行程序,并记录下执行时间。
3.性能分析:a.对不同规模的输入数据运行程序,记录下不同规模下的运行时间;b. 使用mpiexec命令调整进程数量,对不同进程数量运行程序,记录下不同进程数量下的运行时间。
四、实验结果和分析执行实验后得到的结果:1.对不同规模的输入数据运行程序,记录下不同规模下的运行时间,得到如下结果:输入规模运行时间100x1002.345s200x2005.678s300x30011.234s...从结果可以看出,随着输入规模的增加,程序的运行时间也相应增加。
2. 使用mpiexec命令调整进程数量,对不同进程数量运行程序,记录下不同进程数量下的运行时间,得到如下结果:进程数量运行时间110.345s26.789s43.456s...从结果可以看出,随着进程数量的增加,程序的运行时间逐渐减少,但当进程数量超过一定限制后,进一步增加进程数量将不再显著减少运行时间。
MPI实验指导new
MPI实验1.实验目的本实验的目的是通过练习掌握分布存储并行编程的知识和技巧。
●了解并行算法的设计方法●掌握MPI并行程序编写的基本步骤●掌握MPI编程环境和工具的使用2.实验要求(1) 在vs2010上配置MPI环境(2) 熟悉MPI编程环境(3)使用MPI编程实现快速排序的并行化3.实验内容3.1 环境的配置vs2010中MPI的配置步骤:(1)安装mpich2-1.4.1p1-win-ia32.exe (32位机器,若是64位机器,则使用mpich2-1.4.1p1-win-x86-64.msi安装)(2)打开vs2010,建立一个空项目。
(3)在vs中,右键点击项目的属性->配置属性->vc++目录->包含文件,添加安装的mpich2下的include目录,如图:(VS2008,则是在vs中,工具->选项->项目和解决方案->vc++目录->包含文件,添加安装的mpich2下的include目录,)(4)链接器->常规->附加库目录,添加安装的mpich2下的lib目录(若是vs2008,则同样是vc++目录下,库文件下添加安装的mpich2目录下的lib目录),如图:(5)链接器->输入->附加依赖项,添加mpi.lib,如图:(6)点击确定之后,可以进行MPI编程。
编程的实例在文件夹中。
编程完毕之后,启动调试,目的是在Debug文件夹下生成.exe。
(7)到MPI的安装目录bin下找到wmpiregister.exe这个程序并打开,在里面填入一个用户名和密码(此处的用户名密码必须与本机的windows 登录的管理员用户名密码一致,如果没有则需要在控制面板先创建一个windows管理员用户名,并设置密码),点击注册(8)运行wmpiconfig.exe启动配置程序,点Scan Hosts可以查到安装MPICH2的计算机,如果成功的话,可以看到安装了MPICH2的计算机名称编程草绿色。
并行程序实验报告
并行程序设计实验报告姓名:学号:一、实验目的通过本次试验,了解使用OpenMP编程的基本方法和MPI的编程方法,通过实践实现的基本程序,掌握基本的线程及进程级并行应用开发技术,能够分析并行性能瓶颈及相应优化方法。
二、实验环境Linux操作系统,mpi库,多核处理器三、实验设计与实现(一)MPI并行程序设计用MPI编写一个greeting程序,编号为0的进程接受其它各进程的“问候”,并在计算机屏幕上显示问候情况。
用MPI编写一个多进程求积分的程序,并通过积分的方法求π的值,结果与π的25位精确值比较。
(二)多线程程序设计用Pthreads或OpenMP编写通过积分的方法求π的程序。
把该程序与相应的MPI程序比较。
用Pthreads或OpenMP编写编写矩阵相乘的程序,观察矩阵增大以及线程个数增减时的情形。
四、实验环境安装(一)MPI环境安装1.安装kylin操作系统的虚拟机(用VirtualBox)2.安装增强功能,使之与windows主机能够文件共享。
3.拷贝mpich-3.0.4.tar.gz到/root/myworkspace/目录下,并解压(tar xzf mpich-3.0.4.tar.gz)4.下面开始安装mkdir /root/myworkspace/mpi./configure --prefix=/root/myworkspace/mpi --disable-f77 --disable-fcmakemake install5.配置环境变量打开/root/.bashrc文件,在文件的末尾加上两行:PATH=$PATH:/root/myworkspace/mpi/binexport PATH保存退出,然后执行命令source /root/.bashrc(二)openMP实验环境安装Visual Studio中修改:项目->属性->c/c++->语言,将“OpenMP支持”改成“是”:五、实验结果及分析(一)MPI并行程序设计实验一:问候发送与接收非零号进程将问候的信息发送给0号进程,0号进程依次接收其它进程发送过来的消息并将其输出。
openfoam mpi编译
OpenFOAM是一个由英国OpenCFD公司开发的开源计算流体力学软件。
它采用C++编程语言,可以在Linux操作系统上运行。
OpenFOAM具有模块化的结构,使得用户可以方便地定制和扩展其功能。
为了加快计算速度,OpenFOAM还支持MPI并行计算。
MPI(Message Passing Interface)是一种用于编写并行程序的标准。
使用MPI,用户可以在多个处理器上同时执行程序,从而加快计算速度。
在OpenFOAM中,MPI被用于加速求解大规模计算流体力学问题的速度。
在本文中,我们将介绍如何在OpenFOAM中使用MPI进行编译。
一、安装MPI库我们需要安装MPI库。
在Linux系统中,MPI一般通过包管理器进行安装。
以Ubuntu系统为例,可以使用以下命令安装MPI库:sudo apt-get install mpich二、配置MPI环境安装完MPI库后,需要配置MPI环境。
在OpenFOAM中,MPI的配置是通过修改OpenFOAM的环境变量来实现的。
我们需要找到OpenFOAM的安装路径,然后在用户目录下找到.bashrc文件,在其中添加如下行:export WM_MPLIB=SYSTEMOPENMPIexport WM_COMPILE_OPTION=mpi其中,WM_MPLIB指定了使用的MPI库,这里我们使用了OpenMPI;WM_COMPILE_OPTION指定了编译选项为MPI。
三、进行编译配置完成后,就可以进行编译了。
需要清理之前的编译结果,可以使用以下命令进行清理:wclean all进行新的编译:wmake这样就可以在OpenFOAM中使用MPI进行编译了。
四、检查编译结果需要检查编译结果是否正确。
可以通过运行一个包含MPI并行计算的例子来验证编译是否成功。
如果例子能够正确运行并且加速效果明显,说明MPI编译成功。
总结通过本文介绍,我们了解了如何在OpenFOAM中使用MPI进行编译。
MPI安装、设置以及运行
MPI安装、VS设置以及运行一安装MPICH2的安装很简单,按照步骤来就行了。
Intel cluster tool 安装参照install-cluster说明,找到license file即可。
安装完成后在“任务管理器”进程中能找到“smpd.exe”进程说明安装成功。
如下图二VS设置(c语言)首先按照VS步骤新建空项目,编辑源文件。
完成源文件c后,需对其属性进行如下设置才能成功生成exe文件。
1、添加include在工具栏中选择“项目”——“test1属性”,将出现test1属性页,选择“配置属性”——“c/c++”——“常规”,在右侧“附加包含目录”中添加MPI的“include”文件夹,如下图2、添加lib同样在属性页中选择“配置属性”——“链接器”——“常规”,在右侧“附加库目录”中添加“lib”文件夹,如下图3、设置参数同样在属性页中选择“配置属性”——“链接器”——“输入”,在右侧“附加依赖项”中输入“mpi.lib”. 如下图确定,然后退出,完成设置,可以生成exe文件。
三运行生成的exe文件运行exe文件有两种方法,一种通过“开始”——“程序”——“MPICH2”——“wmpiexec.exe”运行,另一种是通过“命令提示符”窗口运行。
但运行前都需要注册,MPI要求电脑设置管理员用户和密码,在注册时采用相同用户名和密码。
设置步骤如下:1、设置电脑管理员用户名和密码2、“开始”——“程序”——“MPICH2”——“wmpiregister.exe”出现如下界面,输入用户名及密码,register,完成注册。
3、在“开始”——“程序”——“MPICH2”——“wmpiconfig.exe”出现如下界面,点击“Scan Hosts”Hosts变成绿色说明注册成功。
下图。
找到由VS生成的exe文件,选择并行处理器的个数,点击“Execute”运行程序。
或者在“命令提示符”窗口中运行。
Dos 命令下1、找到文件路径输入方式,如查找D盘tex文件,2、在命令提示符下运行并行程序tex首先,将生成的程序tex.exe拷贝到mpiexec.exe相同的目录下然后,按下图2找到路径输入命令。
MPI使用操作流程
《mpi使用操作流程》xx年xx月xx日contents •MPI介绍•MPI安装与配置•MPI基本使用方法•MPI并行文件IO操作•MPI并行计算实例•MPI错误处理与调试目录01 MPI介绍Multiple Processor Interface:一种并行计算编程模型,用于多处理器或多线程并行计算。
Message Passing Interface:一种消息传递编程模型,用于分布式或并行计算系统中的进程间通信。
MPI含义MPI标准由美国Argonne国家实验室开发,成为并行计算领域的重要工具。
1993年MPI-2标准发布,增加了对异步通信和动态进程管理的支持。
1997年MPI-3标准发布,优化了并行计算性能和可扩展性。
2008年MPI发展历程MPI应用场景并行数据库MPI可以用于并行数据库系统中的数据分发和通信,提高数据处理速度和效率。
并行图处理MPI可以用于大规模图处理中的并行计算,提高图算法的效率和速度。
高性能计算MPI是高性能计算中常用的并行计算编程模型,被广泛应用于天气预报、物理模拟、数据分析等领域。
02MPI安装与配置确认操作系统版本和支持的MPI版本准备MPI安装所需组件和工具确认网络连接和远程访问能力下载对应版本的MPI安装包解压缩MPI安装包执行安装脚本,如`.bin/install.sh`等待安装过程完成,不要手动中断按照提示进行下一步操作,如选择安装路径、配置环境变量等MPI配置步骤进入MPI安装目录下的`etc`子目录编辑`mpd.conf`文件,配置MPI守护进程的参数配置MPI启动脚本,如`mpd.sh`、`mpdstart.sh`等设置启动脚本属性为可执行,如`chmod +x mpd.sh`使用启动脚本启动MPI守护进程,如`./mpd.sh &`确认MPI守护进程是否成功启动,可以使用`ps -ef |grep mpd`命令查看进程状态03MPI基本使用方法MPI运行环境设置安装MPI选择适合的MPI版本并按照说明进行安装。
MPI使用操作流程
MPI的编程语言与环境
总结词
MPI的编程语言与环境包括使用C/C、Fortran等编程语言编写MPI程序,以及使用MPI开发环境进行 调试和优化等操作。
详细描述
MPI是一种并行计算编程接口,支持多种编程语言,如C、C和Fortran等。在使用MPI进行并行程序设 计时,需要了解MPI提供的各种函数和库,以及相应的使用方法。同时,还需要掌握如何使用MPI开 发环境进行程序的调试和优化,以确保程序的正确性和性能。
数据分析
MPI还可以用于大规模数据 分析,如处上述领域,MPI还在金 融、医疗、图像处理等领域 得到了应用。
02
MPI的基本原理
MPI的通信方式
点对点通信
MPI允许两个进程之间直接发送和接收消息,实现同步通信。
广播和汇聚通信
MPI也支持广播和汇聚操作,让一个进程发送消息给所有其他进程或让所有进 程聚集到一个进程。
MPI将进一步推动标准化和开放性发展,促进不同厂商 和平台的互操作性和兼容性,以降低使用门槛和成本。
可扩展性和灵活性
MPI将进一步增强可扩展性和灵活性,支持更大规模和 不同类型的并行计算任务,以满足不断增长的计算需求 。
安全性与可靠性
MPI将进一步关注安全性与可靠性,确保并行计算过程 中的数据安全和系统稳定性,以满足重要应用的需求。
3
处理单元与通信单元分离
MPI将处理单元和通信单元分离,让程序员更 加专注于算法实现,而不需要过多考虑通信细 节。
03
MPI的使用方法
MPI的安装与配置
总结词
MPI的安装与配置是使用MPI进行并行计算的第一步 ,包括安装MPI运行时环境、设置环境变量和配置网 络等步骤。
详细描述
实验1-1 虚拟机下redhat配置安装mpich过程
用putty工具连接上linux,配置安装mpich:首先要保证安装了gcc工具和gcc-c++工具,另外我的安装用的是root用户,不是mpi用户。
Root用户权限最高,在虚拟机里面我们可以只使用root用户1、导入镜像文件,在红色区域处:光标置于红色区域处如图所示:2、挂在光盘镜像文件:先创建挂载目的路径:挂载光盘镜像文件:3、切换到安装文件的Packages目录:4、安装gcc工具:报告错误,需要安装依赖包5、安装相应依赖包:6、安装gcc-c++工具:7、创建/usr/mpich2目录进入mpich2目录,生成配置文件:8、编译安装mpich2:(未安装make工具)9、安装make工具:10、重新编译安装mpich2:如果make不成功的话,执行下面操作进行重新配置:然后再执行make命令进行重新编译。
11、安装mpich2:12、配置环境变量,编辑.bashrc文件,在文件末尾添加如红色区域内容,命令为:vi ~/.bashrc12、使配置文件生效:13、创建mpich的配置文件,并修改其属性:14、编辑mpich配置文件,添加如下内容:15、为mpich的master节点创建一个包含集群机器名的文件,并添加入主机名:16、单机模式下启动守护进程,进行本地测试(加上&表示在后台启动)(数字为进程号)17、查看启动节点:18、运行测试本地示例:19、单机关闭守护进程(两种方法):方法一:指定mpd的ID号(通过mpdtrace -l命令查看)方法二:直接执行mpdallexit命令20、参照上面步骤,在另一台linux机器里面配置安装mpich21、启动mpich集群,检测如下报407号错误:22、source一下.bashrc文件,再次启动报告415号错误:23、关闭防火墙:24、启动mpich集群,成功:25、查看启动节点:26、在集群上运行测试示例:(可以看出集群上计算所得的PI值误差<Error值大小>比单机计算所得的PI值误差小)三、若要编译fortran程序,还需安装fortran编译器(redhat linux 6自带的fortran编译器为gfortran编译器),安装步骤如下:1、进入挂载上的光盘目录,进入软件安装包目录,用下面的命令查看gfortran安装包:2、选择gfortran的两个安装包进行安装,如下:3、查看mpich目录,存在了fortran编译器:4、但gfortran编译器默认支持fortran90,因此修改fortran程序:(注意fortran90与fortran77不同的地方,如红色区域)5、编译fortran程序:6、运行fortran程序:。
并行实验报告
实验名称:并行处理技术在图像识别中的应用实验目的:1. 了解并行处理技术的基本原理和应用场景。
2. 掌握并行计算环境搭建和编程技巧。
3. 分析并行处理技术在图像识别任务中的性能提升。
实验时间:2023年10月15日-2023年10月25日实验设备:1. 主机:****************************,16GB RAM2. 显卡:NVIDIA GeForce RTX 2080 Ti3. 操作系统:Windows 10 Professional4. 并行计算软件:OpenMP,MPI实验内容:本实验主要分为三个部分:1. 并行计算环境搭建2. 图像识别任务并行化3. 性能分析和比较一、并行计算环境搭建1. 安装OpenMP和MPI库:首先在主机上安装OpenMP和MPI库,以便在编程过程中调用并行计算功能。
2. 编写并行程序框架:使用C++编写一个并行程序框架,包括并行计算函数和主函数。
3. 编译程序:使用g++编译器编译程序,并添加OpenMP和MPI库的相关编译选项。
二、图像识别任务并行化1. 数据预处理:将原始图像数据转换为适合并行处理的格式,例如将图像分割成多个子图像。
2. 图像识别算法:选择一个图像识别算法,如SVM(支持向量机)或CNN(卷积神经网络),并将其并行化。
3. 并行计算实现:使用OpenMP或MPI库将图像识别算法的各个步骤并行化,例如将图像分割、特征提取、分类等步骤分配给不同的线程或进程。
三、性能分析和比较1. 实验数据:使用一组标准图像数据集进行实验,例如MNIST手写数字识别数据集。
2. 性能指标:比较串行和并行处理在图像识别任务中的运行时间、准确率等性能指标。
3. 结果分析:分析并行处理在图像识别任务中的性能提升,并探讨影响性能的因素。
实验结果:1. 并行处理在图像识别任务中显著提升了运行时间,尤其是在大规模数据集上。
2. 并行处理对准确率的影响较小,甚至略有提升。
实验四:数据规约
实验四:数据规约复习知识:1、实验一MPICH安装和VC6编译环境中整合MPICH两部分的内容;HelloWorld 程序运行分析;2、实验二MPI程序的框架结构与基本函数消息发送函数MPI_Send(buf, count, datatype, dest, tag, comm)消息接收函数MPI_Recv(buf, count, datatype, source, tag, comm, status)3、实验三MPI时间函数MPI_Wtime()实验内容:数据规约1)自学P35 有关“9.数据规约函数”的内容,了解MPI_Reduce函数。
2)认真阅读与分析P41 有关“4.4.2 计算π值的MPI程序”的内容和程序代码,理解程序的原理。
3)请在“实验三计算前N个自然数的素数和程序”的基础上,参考本程序,在VC中编程要求实现如下所述的功能,调试运行并分析。
(与实验三不同部分用红色标记)程序概述:●并行计算输出所有小于等于N的整数的连乘积,即N!。
如N=18,则程序输出1×2×3×…×18的连乘积。
●并行的节点个数设定为m个。
为了考虑各节点累加任务的负载均衡,考虑将每个节点负责大约1/m的工作量。
其中,0号节点负责计算1, m+1, 2m+1, 3m+1, 4m+1, …这些自然数的乘积;1号节点负责计算2, m+2, 2m+2, 3m+2, 4m+2, …这些自然数的乘积;2号节点负责计算3, m+3, 2m+3, 3m+3, 4m+3, …这些自然数的乘积;…;最后一个节点号负责计算m, 2m, 3m, 4m, …这些自然数的乘积。
此过程可以用下图表示(假设m=4):1×2×3×4×5×6×7×8×9×10×11×12×13×14×15×16×17×180号1号2号3号●各节点在求出本部分的整数的乘机后,采用数据规约方式,由0号进程负责规约各个节点的计算结果汇总,并在0号进程中输出结果。
Siesta-TranSiesta-Smeagol并行安装笔记
Siesta-TranSiesta-Smeagol安装笔记公开安装笔记的目的有二:①使新手少走弯路②望高手不吝赐教!致谢:非常感谢北京大学沈鑫,马国辉,山东大学侯栋,以及张少龙老师在我安装学习过程中提供的无私帮助,也由衷的感谢导师王传奎教授的大力支持,感谢北大侯士敏教授提供的学习机会!说明:由于本人初学且水平有限,难免出现笨拙之笔,希望高手不吝赐教!(均以非root用户为例)一、安装mkl1.将l_mkl_p_10.0.2.018.tgz和*.lic文件拷贝到一个临时的目录里面(如tem)2.解压文件:$tar -zxvf l_mkl_p_10.0.2.018.tgz3.进入解压后的目录:$cd l_mkl_p_10.0.2.0184.启动安装:$./install.sh 依次选择选项:3(用当前的用户安装)——>1(安装)——>2(提供.lic文件的绝对路径)——>提供你的.lic文件的绝对路径(例如:/home/zgp/tem/l_mkl_p_10.0.2.018.lic) ——>2(不用RPM数据)——> <Enter> ——> <Enter> ——> 一直空格accept ——> <Enter>(确认默认安装路径或者键入自己的安装路径)——><Enter>——><Enter>(完成安装)5.环境设置:vi ~/.bashrc (打开文件.bashrc,按i进入编辑状态)添加source /home/zgp/intel/mkl/10.0.2.018/tools/environment/mklvarsem64t.sh(如果用的不是bash而是用的csh,就用mklvarsem64t.csh)关闭之后 source ~/.bashrc(使设置起作用,以后再新进入shell之后mkl可以直接使用)注意:卸载mkl,必须到安装目录下找到uninstall.sh$./uninstall.sh二、安装Fortran编辑器PGI安装:1.将pgilinux86-64-707.tar.gz文件拷贝到一个临时的目录里面(如tem)2. 解压文件:$tar -zxvf pgilinux86-64-707.tar.gz3. 开始安装$./install 安装选项:一直空格——> accept ——>1 ——>y ——>一直空格——> accept ——>/home/zgp/software/pgi——>提供信息——>n4.环境设置:vi ~/.bashrc (打开文件.bashrc,按i进入编辑状态)添加:PGI=/home/test/software/pgiexport PGIMANPATH=$MANPATH:$PGI/linux86-64/7.0-7/manexport MANPATHLM_LICENSE_FILE=$PGI/license.datexport LM_LICENSE_FILEPATH=$PGI/linux86-64/7.0-7/bin:$PATHexport PATH关闭之后 source ~/.bashrc(使设置起作用,以后再新进入shell之后pgi可以直接使用并且成为默认的编译器)5.测试PGI是否可用:$pgf90$pgf77注意:PGI卸载,可以直接删除安装文件ifort安装:1. 将l_fortran-compiler_p_10.1.012.tar.gz和*.lic文件拷贝到一个临时的目录里面(如tem)2. 解压文件:$tar -zxvf l_fortran-compiler_p_10.1.012.tar.gz3. 进入解压后的目录:$cd l_fc_p_10.1.0124. 启动安装:$./install.sh依次选择选项:3(用当前的用户安装)——>1(安装)——>2(提供.lic文件的绝对路径)——>1提供你的.lic文件的绝对路径(例如:/home/zgp/tem/ l_fortran-compiler_p_10.1.012.lic) ——>1(典型安装)——><Enter> 一直空格accept ——> <Enter>(确认默认安装路径或者键入自己的安装路径)——><Enter>(确认默认安装路径或者键入自己的安装路径)——><Enter>(确认默认安装路径或者键入自己的安装路径)——><Enter>——><Enter>(确认默认安装路径或者键入自己的安装路径)——><Enter>——><Enter> (完成安装)5.环境设置:vi ~/.bashrc (打开文件.bashrc,按i进入编辑状态)添加source /home/zgp/intel/fce/10.1.012/bin/ifortvars.sh(如果用的不是bash而是用的csh,就用ifortvars.csh)关闭之后 source ~/.bashrc(使设置起作用,以后再新进入shell之后ifort可以直接使用并且成为默认的编译器)6.测试$ifort出现ifort: command line error: no files specified; for help type "ifort -help"说明ifort 安装成功注意:卸载ifort,必须到安装目录下找到uninstall.sh$./uninstall.sh三、安装mpiMPICH的安装:(各种版本的下载地址/research/projects/mpich2/)1.将mpich-1.2.7.tar.gz文件拷贝到一个临时的目录里面(如tem)2.解压文件:$tar -zxvf mpich-1.2.7.tar.gz3.进入解压后的目录:$cd mpich-1.2.74. $./configure -prefix=/home/zgp/software/mpich-1.2.7 -fc="pgf77-Mx,119,0x200000"\ -f90="pgf90 -Mx,119,0x200000"\ -without-romio --without-mpe -opt=-O -rsh=ssh(若要使用的是ifort编译则设置成$./configure-prefix=/home/zgp/software/mpich-1.2.7 -fc=ifort -f90=ifort –f77=ifort -rsh=ssh)5. $make6. $make install7环境配置:vi ~/.bashrc (打开文件.bashrc,按i进入编辑状态)添加export PATH=/home/zgp/software/mpich-1.2.7/bin:$PATH关闭之后 source ~/.bashrc(使设置起作用,以后再新进入shell之后直接可以用mpirun)8.测试:$cd examples$make$mpirun –np 4 cpi$The authenticity of host 'localhost (127.0.0.1)' can't be established.RSA key fingerprint is c0:48:84:0c:31:93:29:9a:d6:f6:07:08:7b:cc:33:db.Are you sure you want to continue connecting (yes/no)?$yes$Warning: Permanently added 'localhost' (RSA) to the list of known hosts.$zgp@localhost's password:这时连续输入3次密码出现$Process 0 on localhostProcess 2 on localhostProcess 3 on localhostProcess 1 on localhostpi is approximately 3.1416009869231249, Error is 0.0000083333333318wall clock time = 0.003906表明安装成功。
MPICH的安装使用和MPI原理分析
MPICH的安装使用和MPI原理分析MPICH是一种开源的、可移植的并行计算库,它实现了MPI(Message Passing Interface)标准。
MPI是一种用于并行计算的通信协议,可以在分布式计算环境中实现不同计算节点之间的数据交换和通信。
MPICH提供了一套API,使得开发者可以方便地利用MPI进行并行计算。
下面将介绍MPICH的安装使用和MPI原理分析,以帮助读者更好地理解和使用MPICH。
一、MPICH的安装使用1. 安装准备:在安装MPICH之前,需要确保系统中已经安装了必要的编译器和依赖库。
通常情况下,需要安装C/C++编译器、Fortran编译器和相关的开发库。
4.配置编译选项:进入解压后的MPICH目录,执行以下命令配置编译选项:./configure --prefix=<install_path>其中,<install_path>是指定MPICH安装的路径。
5.编译安装:执行以下命令进行编译和安装:makemake install6. 配置环境变量:将MPICH的安装路径添加到系统的环境变量中,以便系统可以找到MPICH的可执行文件。
可以在.bashrc或者.bash_profile文件中添加以下内容:export PATH=<install_path>/bin:$PATHexport LD_LIBRARY_PATH=<install_path>/lib:$LD_LIBRARY_PATH其中,<install_path>是MPICH的安装路径。
7.测试安装:执行以下命令测试MPICH是否安装成功:mpiexec -n <num_processes> <executable>其中,<num_processes>是指定并行计算的进程数,<executable>是指定要运行的可执行文件。
MPICHPBS使用指南使用指南使用说明mp使用指南使用说明mp
MPICH&PBS使用指南一、MPI编程 (1)二、MPICH下编译和运行 (3)三、PBS环境下运行 (4)一、MPI编程1、MPI编程函数介绍MPI实际上是一个提供并行程序消息传递机制的函数库,有40多个函数,常用的有6个基本函数。
下面以C语言为例简单介绍这些函数。
(1)MPI_Init函数定义:int MPI_Init(int *argc, char ***argv)功能:用命令行参数初始化MPI环境输入:argc、argv—表示命令行参数,同C语言的main()函数参数格式,argv中包含欲并行运行的进程数输出:返回值—非零/零表示初始化是否成功说明:该函数必须为程序中第一个调用的MPI函数示例:MPI_Init(&argc, &argv); // argc、argv引用的是mian()函数的参数(2)MPI_Finalize函数定义:int MPI_Finalize (void)功能:结束MPI程序的运行,指结束MPI环境的使用输入:无输出:返回值—非零/零表示结束MPI环境是否成功说明:该函数必须为程序中最后一个调用的MPI函数示例:MPI_ Finalize ();(3)MPI_Comm_size函数定义:int MPI_Comm_size(MPI_Comm comm, int *size)功能:得到总进程数输入:comm 通信域句柄(系统默认的为MPI_COMM_WORLD,也可自己定义)输出:size,即通信域comm内包括的进程数整数(4)MPI_Comm_rank函数定义:int MPI_Comm_rank(MPI_Comm comm, int *rank)功能:得到本进程的进程号输入:comm,该进程所在的通信域句柄输出:rank,调用进程在comm中的标识号(5)MPI_Send函数定义:int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) 功能:发送消息给特定的进程输入:buf 发送缓冲区的起始地址(可选类型)count 将发送的数据的个数(非负整数)datatype 发送数据的数据类型(句柄)dest 目的进程标识号(整型)tag 消息标志(整型)comm 通信域(句柄)输出:无(6)MPI_Recv函数定义:int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag,MPI_Comm comm,MPI_Status *status)功能:接受别的进程发过来的消息输入:count 最多可接收的数据的个数(整型)datatype 接收数据的数据类型(句柄)source 接收数据的来源即发送数据的进程的进程标识号(整型)tag 消息标识与相应的发送操作的表示相匹配相同(整型)comm 本进程和发送进程所在的通信域(句柄)输出:buf 接收缓冲区的起始地址(可选数据类型)status 返回状态(状态类型MPI_Status)2、MPI程序示例MPI程序中必须包含MPI库的头文件,C语言头文件名为mpi.h,FORTRAN语言头文件名为mpif.h。
MPI计时
实验三:MPI计时复习知识:1、实验一MPICH安装和VC6编译环境中整合MPICH两部分的内容;HelloWorld 程序运行分析;2、实验二MPI程序的框架结构与基本函数3、消息发送函数MPI_Send(buf, count, datatype, dest, tag, comm)消息接收函数MPI_Recv(buf, count, datatype, source, tag, comm, status)实验内容:MPI时间函数练习1)自学P35 有关“7.计时功能”的内容,了解MPI程序中获取时间的方法。
2)认真阅读与分析P40 有关“4.4.1 获取数据传输时间”的内容和程序代码,理解程序的原理。
3)请参考本程序,在VC中编程要求实现如下所述的功能,调试运行并分析。
程序概述:●并行计算输出所有小于等于N的素数的总和。
如N=20,则程序输出1+2+3+5+7+11+13+17+19之和。
●并行的进程个数设定为4个。
为了考虑各进程累加任务的负载均衡,考虑将每个进程负责大约1/4的工作量。
即:0号进程计算1~[N/4]素数只和的计算,1号进程计算[N/4]~[2N/4]素数只和的计算,2号进程计算[2N/4]~[3N/4]素数只和的计算,3号进程计算[3N/4]~[N]素数只和的计算。
●各进程求出本区间素数之和后,将值传递给0号进程,由其累加并输出结果。
●此外,0号进程还负责计时,并输出所耗费时间。
提醒:●N值可以采用预先定义值(#define N …),也可以接受程序命令命令行参数(argc和argv)取得。
●各区间之间不要有重复或遗漏的元素。
●在调用MPI_Send和MPI_Recv函数的时候,要特别注意各个参数的的值。
(参考课本P34两个函数的说明)提交实验报告(附上源代码和代码说明)。
MPICH 并行程序设计环境
实验一:MPICH 并行程序设计环境预备知识:MPI简介课本P27 4.1.1~4.1.41.MPICH for Microsoft Wind ows的安装与配置1.1 系统要求安装MPICH for Microsoft Windows对系统有如下要求:·Windows NT4/2000/XP 的Professional 或Server版(不支持Windows 95/98)·所有主机必须能够建立TCP/IP 连接MPICH支持的编译器有:MS VC++ 6.x,MS VC++.NET,Compaq Visual Fortran 6.x,Intel Fortran,gcc,以及g77。
安装MPICH,必须以管理员的身份登录。
1.2下载(略)1.3 安装以管理员的身份登录主机,然后,运行下载的安装文件,将MPICH 安装到每台主机上。
2.在VC 6编译环境中整合MPICHMPICH提供了C语言和Fortran语言的接口。
要编译一个MPI+C或MPI+Fortran的程序必须对编译器进行设置。
下面对Visual C++ 6.0进行说明。
在Visual C++ 6中编译一个MPI+C的程序的步骤如下:1.打开Visual C++ 6的Develop Studio。
2.新建一个工程,通常为Win32 Console Application。
3.在新的工程的编辑界面下,按Alt+F7打开工程设置对话框。
4.切换到C/C++选项卡。
(如图1)首先选择“Win32 Debug”(①的下拉框),再选择“Code Generation”(②的下拉框),再选择“Debug Multithreaded”(③的下拉框)。
这时在“Project Options”的文本框中显示“/MT”表示设置成功。
然后选择“Win32 Release”(①的下拉框)重复上述步骤。
(图2)VC6 配置图(1)VC6配置图(2)5.在C/C++选项卡中,选择“All Configurations”。
MPI安装与运行报告2
Ubuntu系统下mpich2的安装。
把老师给的“mpich2-1.3.2p1.tar.gz ”解压到我的用户目录下。
一、首先进入解压后mpich2文件的根目录,运行配置操作:./configure--prefix=/home/<USERNAME>/mpich2-install |& tee info.txt ,结果报错如下:"No Fortran 77 compiler found. If you don't need to build anyFortran programs, you can disable Fortran support using--disable-f77 and --disable-fc. If you do want to buildFortran programs, you need to install a Fortran compiler suchas gfortran or ifort before you can proceed."于是按照提示修改命令,改为./configure --prefix=/home/east/mpich2-install --disable-f77 --disable-fc |& tee info.txt,结果又提示没有找到C++编译器:“configure: error: Aborting because C++ compiler does not work. If you do not need a C++ compiler, configure with –disable-cxx”考虑到以后应该会用到g++,于是根据提示用“sudo apt-get install g++”命令进行了安装。
然后再次运行配置命令,终于成功完成。
二、运行make命令”make |& tee info.txt”,经过了漫长的等待,看到提示”Make completed”的时候,终于松了一口气。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3 安装MPICH准备知识(自学)一、Linux命令及脚本文件目的与要求:使学生掌握Linux基本命令的使用;学会编写简单的脚本文件。
主要内容及提示:1.Linux基本命令1.1帮助所有的Linux命令及C,MPI函数的使用说明都可以通过联机帮助获得。
man 〈命令|C语言函数名|MPI函数名〉〈命令名〉—help1.2 文件、目录、磁盘操作命令ls 查看目录中的内容,常用的参数有–alpwd 显示当前工作目录cd 改变当前工作目录,(.表示当前目录;..表示父目录;~表示当前用户的主目录)mkdir 建立子目录cp 复制文件或子目录,可用参数 -Rcat 显示文件内容more 分屏输出(回车:上滚一行;空格:上滚一屏;q:退出)less 分屏输出(q键退出、还可以使用光标上下移动键)chmod 改变文件或目录的读(r)写(w)执行(x)属性(三组rwx中,第一组rwx 为该文件主的权限、第二组rwx为同一用户组中其他用户的权限、第三组rwx为其他用户的权限。
例如:chmod 765 <文件名>,则文件的读写执行权限为rwxrw-r-x,即7=111B,6=110B,5=101B,这里B表示二进制)ln 建立文件链接,常用参数-s(相当于Windows中的“快捷方式”)rm 删除文件,删除子目录(需要参数-r)mv 移动文件(目标文件若存在,则会被覆盖)gzip gz文件的压缩/解压缩,常用参数-d(解压缩),-9(最大压缩)tar tar,tgz文件的打包/解包,常用参数-cvf(打包成tar文件),-xvf (解tar文件包),-zcvf(打包并压缩成tgz文件),-zxvf(解tgz文件) df 显示硬盘各分区的使用情况mount 装载文件系统umount 卸载文件系统1.3 m命令集——DOS/Windows格式软盘的使用mdir或mdir a: 显示软盘当前目录内容mcopy Linux操作系统中的文件与DOS/Windos格式软盘之间复制文件mtype 显示软盘中指定文件的内容mren 更改软盘中指定文件的文件名mdel 删除软盘中指定文件mcd 改变软盘的当前目录mmd 在软盘上建立子目录mrd 删除软盘上的子目录1.4 C/C++/Fortran 77/Fortran 90及MPI程序的编译链接cc [–o 〈可执行文件名〉] 〈源程序文件名.c|.cpp〉–l〈库名〉例如:若exam1.c使用了数学函数(如:sqrt(x))则命令应为cc –o exam1 exam1.c –lm (这里m表示将链接库文件libm.a)若缺省参数-o 〈可执行文件名〉则默认的可执行文件名为a.out cc –c 〈目标代码文件名.o〉〈源程序文件名.c|.cpp〉仅编译不链接gcc, f77, g77, make, mpicc, mpiCC, mpif77, mpif90等格式相同。
1.5 重新定向与管道操作>、>> (输出重新定向);< (输入重新定向);| (管道)1.6 系统状态clear 清屏top 显示系统状态(各进程CPU、内存)ps 显示已经启动的进程,常用参数有 -xhostname 显示当前计算机名,常用参数有 -idate 显示系统日期时间set 显示/设置系统环境变量env 显示/设置系统环境变量kill 终止指定进程1.7 与用户有关的操作logout 退出登录exit 退出登录whoami 显示当前的用户名(Who am I?)1.8 远程操作命令rsh <机器名> [-l 用户名] [〈命令〉[命令的参数]]rcp [用户名@]机器名:路径/文件名 [用户名@]机器名:路径/文件名telnet 机器名ftp 机器名1.9 编辑器的使用vi 文件名<ESC>键——进入vi的命令状态,击冒号和命令,例如,“:wq”存盘退出,“:q!”不存盘退出)i键——进入vi的插入状态joe 文件名^KH显示/隐藏joe编辑器的编辑命令帮助,如:^KX为存盘退出。
Xwindow中有多种编辑器,如gedit。
1.10 关于bash.bashrc文件中可以设置一些环境变量,如:命令程序的检索路径PATH等。
shell提供的小窍门”~”:(~可表示用户的登录主目录,事实上并没有一个目录名为~)。
〈tab〉键的功能:在Linux命令处理程序中(即命令行提示符$>下)可以使用〈tab〉键由Linux系统自动补足可能的文件名。
2.脚本文件脚本文件是由Linux外部命令、内部命令编写的命令程序,可以实现“批处理”。
脚本文件采用文本文件格式,其文件属性应有可执行成分(可用chmod +x 〈脚本文件名〉增加这种属性)。
在命令提示符下键入脚本文件名(必要时可带多个参数)启动脚本文件执行。
脚本文件中除可以执行Linux命令外,还可以执行算术计算、条件判断、循环等基本流程控制语句。
例如:欲在所有计算机中的gcc用户主目录中建立一个子目录(假设有同学“张山”欲在n10~n17,共8台计算机上都建立ZSMPI子目录,即目录/home/gcc/ZSMPI),可以使用如下命令启动下面的脚本文件命令: rmkdirs ZSMPI 10 17脚本文件名:rmkdirs (用任何编辑器建立、然后chmod +x rmkdirs)脚本文件内容:#FILENAME: rmkdirsif [ -z $3 ]then echo "$0 <subdirname> <num_node_start> <num_node_end>"echo "(e.g.) $0 ZSMPI 10 17"exitfim=$2while [ $m -le $3 ]doecho ”rsh n$m mkdir $1”rsh n$m mkdir $1let m=$m+1done注:另一种方法,机器名不一定连续,则需要在脚本文件中列出。
脚本文件如下,启动脚本文件只需要一个参数——子目录名。
# FILENAME: rmkdirs1if [ -z $1 ]then echo "$0 < subdirname >"echo "(e.g.) $0 ZSMPI"exitfifor m in 10 11 12 13 17 15 14 16doecho ”rsh n$m mkdir $1”rsh n$m mkdir $1done实验3 安装MPICH3.1 实验目的本次实验目的安装MPICH。
3.2 MPI介绍MPI(Message Passing Interface)是目前发展较快、使用面较广的一个公共的消息传递库,顾名思义,就是在现有机器的软硬件通信基础上,实现了并行应用程序中各并行任务之间的相互通信、协调和同步功能,并对这些并行任务进行管理。
MPI是在众多专家经多次会谈、综合考虑了NX/2、Express、Vertex、p4、PARMACS和PVM的优点的前提条件下,于1993年形成的一个标准,可谓后起之秀。
它具有可移植性、高效性、灵活性和易用性的特点,不仅适用于具有分布式内存的大型机、工作站机群,也可用于具有共享内存的大型机。
3.3 实验内容一、MPICH的安装及使用目的与要求:使学生掌握MPI系统地安装、MPI程序的编译链接及运行。
主要内容:1.MPICH的安装1.1解压tar -xzvf openmpi-1.6.5.tar.gz将MPICH文件解压缩、解包到某子目录。
1.2系统配置cd openmpi-1.6.5若当前使用得Shell的辅助检索路径中没有设置当前目录,则应使用命令./configure --prefix=/opt/openmpi-1.6.5 >& configure.log注:/opt/openmpi-1.6.5是安装路径,configure.log保存屏幕显示此外在配置过程可以指定编译器或选择用rsh或ssh。
1.3 编译make >& make.log1.4 安装make install设置辅助检索路径1.5 设置路径若是超级用户安装,则可以统一添加一条辅助检索路径。
方法为修改/etc/profile文件在适当位置修改和添加:export PATH=/opt/openmpi-1.6.5/bin:$PATHexport INCLUDE=/opt/openmpi-1.6.5/include:$INCLUDEexport LD_LIBRARY_PA TH=/opt/openmpi-1.6.5/lib:$LD_LIBRARY_PA TH若是普通用户则修改用户目录下的:~/.bash_profile文件运行以下命令使修改生效:source /etc/profile (或者source .bashrc)注:可通过命令$ env | grep -w LD_LIBRARY_PA TH和$ env | grep -w PATH来查看环境变量修改是否成功。
可运行目录examples下的例子程序查看是否安装成功在安装时可能需要一些软件,可以通过yum install ** 进行安装,例如:*** C++ compiler and preprocessorchecking for g++... nochecking for c++... nochecking for gpp... nochecking for aCC... nochecking for CC... nochecking for cxx... nochecking for cc++... nochecking for cl.exe... nochecking for FCC... nochecking for KCC... nochecking for RCC... nochecking for xlC_r... nochecking for xlC... nochecking whether we are using the GNU C++ compiler... nochecking whether g++ accepts -g... nochecking dependency style of g++... nonechecking how to run the C++ preprocessor... /lib/cppconfigure: error: in `/usr/hpl/openmpi-1.6.5':configure: error: C++ preprocessor "/lib/cpp" fails sanity checkSee `config.log' for more details是由于没有编译器,因此可以网上查找软件的名称,然后安装。