FORTRAN环境下MPI的安装与运行

FORTRAN环境下MPI的安装与运行
FORTRAN环境下MPI的安装与运行

注:因为我给的压缩包约400kb,不能作为附件上传,所以在请总版主将其放到此贴中或合适的地方。请大家等待附件上传到这。谢谢!

或从以下地址下载:

ftp://202.115.134.210//incoming/majia

Windows环境下简便的配置MPICH2并行环境

很多Windows用户在应用并行环境时,发现对工程的设置非常麻烦,其实这一问题可以容易的解决。本文将就Compaq Visual Fortran 6.5环境中如何实现MPICH2并行计算做一简单的介绍。

首先,介绍一下MPICH2的安装,MPICH2可以在以下网站免费下载https://www.360docs.net/doc/d83250326.html,/mpi/mpich2/,我下载的是Win32 IA32平台的安装程序https://www.360docs.net/doc/d83250326.html,/mpi/mpich2/downloads/mpich2-0.971-2-win32-ia32.msi 。在Windows下安装此程序即可,其默认安装目录为c:\program files\mpich2。在此目录下有四个子目录,分别为bin,example,include和lib。其中bin目录下有两个执行文件,smpd.exe和mpiexec.exe。在后面将介绍其应用。在“我的电脑”环境变量设置中将bin目录写入路径path变量,这样就可以在任何地方执行此目录下的文件了(或者,你可以将其copy到工作目录,如果你不闲烦的话)。

其次,设置CVF6.5环境,这一步需要将MPICH2的include和lib目录写进CVF6.5的搜索目录。其做法请参考设置过程图解cvfdemo.html ,其中需要注意的是将图解中的对应目录换成MPICH2目录下的include和lib。设置完成后,将本压缩包中mpich2.mod文件拷贝到MPICH2目录下的include子目录下。Mpich2.mod是我自己编写的一个接口程序,用于简化CVF6.5与MPICH2之间的环境设置,此程序必需放在正确的地方。

最后,介绍如何运行并行程序。在本压缩包中有一个FORTRAN编码的例子hello.f90,此程序可以在CVF6.5环境下直接进行编译。注意,以后所有的并行程序的最前面必需加上“use mpich2”这一行。这样才能正确编译并行程序。编译好后,会在当前工作目录的子目录debug下找到可执行文件hello.exe。在DOS 命令行模式下,进入debug目录,首先键入“smpd”回车,这样开始调用并行运行服务,再执行“mpiexec –n 5 hello”,就可以看到hello.exe程序的运行结果。当然,这里的“5”是节点的个数,你可以更改此值,自己进行尝试。Ok,恭喜你,现在你已经可以运行一个完整的并行程序了。要想成为高手,还要不断努力。Good luck。

MPI编程环境配置与示例

目录 一、系统安装 (1) 1、下载地址 (1) 2、安装步骤 (1) 3、Visual Stdio设置 (1) 二、实验程序 (2) 1、简单得MPI编程示例 (2) 2、消息传递MPI编程示例1 (3) 3、消息传递MPI编程示例2 (4) 4、Monte Carlo方法计算圆周率 (6) 5、计算积分 (8) 三、心得体会 (9) 一.系统安装 1.下载地址 FTP匿名登陆,在pub/mpi/nt文件夹中 2.安装步骤 1)在安装有MPI得计算机上要建立一个有管理员权限得账户,不可以没有密 码; 2)双击exe文件,按默认设置安装MPI; 3)注册MPI账户,调用MPIRegister、exe,用户名与密码即为第一步中得账户。 3.Visual Stdio设置 为避免每新建一个项目都要设置一次,可以对它进行通用设置。 打开视图-其她窗口-属性管理器,点击Debug|Win32目录下得Microsoft、Cpp、Win32、user,在VC++目录下得包含目录中添加MPICH得Include路径,库目录中添加MPICH得Lib路径;在链接器-输入目录下得附加依赖项中添加mpich、lib、mpe、lib、mped、lib、mpichd、lib。

二.实验程序 1.简单得MPI编程示例 1)源代码 #include #include int main(int argc, char* argv[]) { int num, rk;

MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &num); MPI_Comm_rank(MPI_COMM_WORLD, &rk); printf("Hello world from Process %d of %d\n", rk, num); MPI_Finalize(); return 0; } 2)运行截图 2.消息传递MPI编程示例1 1)源代码 #include #include int main(int argc, char** argv) { int myid, numprocs,source; MPI_Status status; char messages[100]; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); if (myid != 0)

MPI安装与运行报告

MPI 安装于运行报告 本机运行环境: 机器型号:联想G450 处理器:Pentium(R)Dual-Core CPU T4200 @ 2.00GHz 运行内存 (RAM):2GB 操作系统:Windows 7(32 位) 程序开发环境:Visual Studio 2008 MPI 版本: mpich2-1.3.2p1-win-ia32 安装程序 详细安装步骤: 1、运行mpich2-1.3.2p1-win-ia32.msi。 安装过程中,会要求设置一个passphrase我的机器上默认的passphrase是beHappy,很有意思的密码。设置这个东西很重要,一定要记住;下面会说到为什么。 2、安装完之后,不知道下一步怎么进行了。打开刚才安装的MPICH2 的快捷方式目录,发现了一个README文件。打开之后,发现了MPICH2的使用方法介绍,于是按照其中的指示,我进行了第一个MPI 并行程序的编写。 我使用的是VC++2008首先创建一个新的工程,取名为MPITes。 添加MPI 库的支持: 按照README中的指导,应该首先将MPI的头文件目录包含到项目中去。结果在项目属性中找了半天,也没有找到添加头文件目录的位置,只找到了包含库文件的位置,我安装MPICH2的目录为D:\Program Files\MPICH2将MPICH2的库文件添加到如下面图1所示的位置即可。 最后才反应过来,这个工程还是空的,没有任何文件,可能跟这个有关系吧。 于是,马上新建了一个Cpp文件main.cpp,将老师PPT中的例子程序拷贝进去。

图1 果然,新建了这个cpp文件之后,项目属性中多出了C/C++这样一项, 于是,就可以在其中设置包含文件的目录了,相应的配置如下面图2所示 图2 设置好这些文件之后,编译程序,结果在连接的时候报错,类似于 main.obj : error LNK2019:无法解析的外部符号_MPI_Finalize,该符号在函数_main中被引用”这样的错误出现了六个。再看READM文档,发现了这样? 句话:

MPI并行程序设计实例教程

编辑推荐 ◆书中内容侧重于以MPI库为基础开发并行应用程序,对MP规范定义的各项功能和特征在阐述其特点基础上均配以实例加以说明和印证。 ◆书中所附实例尽量采用独立的功能划分,其中的代码片段可直接用于并行应用程序开发 ◆在讲述基本原理的同时,注重对各项消息传递和管理操作的功能及局限性、适用性进行分析从而使熟读此书的读者能够编写出适合应用特点,易维护、高效率的并行程序。 ◆与本书配套的电子教案可在清华大学出版社网站下载。 本书简介 本书旨在通过示例全面介绍MP1并行程序开发库的使用方法、程序设计技巧等方面的内容,力争完整讨论MP1规范所定义的各种特征。主要也括MPI环境下开发并行程序常用的方法、模式、技巧等 内容。在内容组织上力求全面综合地反映MPl-1和MPI-2规范。对MPI所定义的各种功能、特征分别

给出可验证和测试其工作细节的示例程序 目录 第1章 MPI并行环境及编程模型  1.1 MPICH2环境及安装和测试 1.1.1 编译及安装 1.1.2 配置及验汪 1.1.3 应用程序的编译、链接 1.1.4 运行及调试 1.1.5 MPD中的安全问题  1.2 MPI环境编程模型 1.2.1 并行系统介绍 1.2.2 并行编程模式 1.2.3 MPI程序工作模式  1.3 MPI消息传递通信的基本概念 1.3.1 消息 1.3.2 缓冲区 1.3.3 通信子 1.3.4 进样号和进程纰 1.3.5 通价胁议 1.3.6 隐形对象 第2章 点到点通信  2.1 阻糍通信 2.1.1 标准通信模式 2.1.2 缓冲通信模式 2.1.3 就绪通信模式 2.1.4 同步通信模式 2.1.5 小结  2.2 非阻塞通信 2.2.1 通信结束测试 2.2.2 非重复的非阻塞通信 2.2.3 可醺复的非阻塞通信 2.2.4 Probe和Cancel  2.3 组合发送接收 2.3.1 MPl_Send,MPI_RecvoMPl_Sendreev 2.3.2 MPI_Bsend←→MPl_Sendrecv 2.3.3 MPI_Rsend←→MPI_Sendrecv 2.3.4 MPl_Ssend←→MPl_Sendrecv 2.3.5 MPl_lsend←→MP1一Sendrecv 2.3.6 MPl_Ibsend←→MPI_Sendrecv 2.3.7 MPI_Irsend←→MPI_Sendrecv 2.3.8 MPl_Issend,MPI_Irecv←→MPI_Sendrecv 2.3.9 MPI Send_init←→MPl_Sendrecv 2.3.10 MPI一Bsendj init←→MPl_Sendrecv 2.3.11 MPI_Rsend_init←→MPI_Sendrecv 2.3.12 MPl_Ssend_init,MPl_Recv_init←→MPl_Sendrecv 2.4 点到点通信总结

MPI环境搭建

MPI 并行环境的搭建 1、在计算机中,安装两个CentOS系统 2、[root@node1 etc]# ifconfig #查看ip 192.168.241.128 [root@node2 etc]# ifconfig 192.168.241.129 3、互ping [root@node1 etc]# ping 192.168.241.129 #测试网络是否联通 [root@node2 etc]# ping 192.168.241.128 4、修改/etc/hosts文件,在节点设置节点名称 192.168.241.128 node1 192.168.241.129 node2 [root@node1 etc]# source /etc/hosts [root@node2 etc]# source /etc/hosts 5、各个节点是否互通 [root@node1 etc]# ping node2 #测试主机名修改是否成功 [root@node2 etc]# ping node1 6、关闭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/cluster 8、挂在nfs文件系统 /etc/exports文件配置 在node1(主节点)节点配置 [root@node1 etc]# vi /etc/exports usr/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节点执行

关于vc++6.0安装配置MPI

关于在vc++6.0中安装配置MPI 1、下载安装MPICH,安装过程中最好把密码设置为自己的开机密码 关于安装完成后设置 对MPICH2的wmpiregister.exe 设置用户名密码,是计算机名和开机密码 可以来个简单的测试,打开wmpirexec.exe 在application中添加Program Files (x86)\MPICH2\examples中例子,选中“run in an separate window”然后点击execute…(如果有问题,有可能是wmpiregister.exe用户名设置的问题) 现在设置vc++6.0------------------------------------------------------------------ 2、打开vc++6.0 在(工具-选项-目录)把mpich相对应的include和lib添加到include files/library files

3、新建一个工程,可以写mpitest.cpp,为了避免宏定义冲突,在#include”mpi.h”之前要加入#include MPICH_SKIP_MPICXX(这样就可以通过编译) 4、编译通过了,但是链接仍然会出错继续设置 (在工程—>设置->链接中的对象/库模板块后加入mpi.lib)上图 这样就可以通过链接了(每次建工程都要加入mpi.lib的操作)

再贴一个简单的例子吧 #define MPICH_SKIP_MPICXX #include "mpi.h" #include #include double f(double); double f(double a) { return (4.0 / (1.0 + a*a)); } int main(int argc,char *argv[]) { int done = 0, n, myid, numprocs, i; double PI25DT = 3.141592653589793238462643; double mypi, pi, h, sum, x; double startwtime = 0.0, endwtime; int namelen; char processor_name[MPI_MAX_PROCESSOR_NAME]; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); MPI_Get_processor_name(processor_name,&namelen); /* fprintf(stdout,"Process %d of %d is on %s\n", myid, numprocs, processor_name); fflush(stdout); */ while (!done) { if (myid == 0) { fprintf(stdout, "Enter the number of intervals: (0 quits) "); fflush(stdout); if (scanf("%d",&n) != 1) { fprintf( stdout, "No number entered; quitting\n" ); n = 0; } startwtime = MPI_Wtime();

MPI并行计算环境的建立

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.gz cd 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 node1 192.168.1.3 node2 192.168.1.4 node3

MPI并行编程环境及程序设计

第27卷 第3期河北理工学院学报Vol127 No13 2005年8月Journa l of Hebe i I n stitute of Technology Aug.2005 文章编号:100722829(2005)0320041203 MP I并行编程环境及程序设计 杨爱民1,陈一鸣2 (11河北理工大学理学院,河北唐山063009;21燕山大学理学院,河北秦皇岛066004)关键词:MP I;并行编程;消息传递 摘 要:通过对MP I原理和特点的研究,给出了并行MP I程序的基本设计思路和执行过程,并 实现了向量相加的并行计算。 中图分类号:TP316 文献标识码:A 0 引 言 近几十年来,大规模和超大规模的并行机取得了快速发展,由于各种原因,开发商对用户提供的必要支持,如它们各自专有的消息传递包NX、EU I、P VM等,虽然在特定平台上具有很优越的性能,但是从应用程序来看,可移植性差。1992年11月,在Supercomputi ong’92会议上,正式成立了一个旨在建立一个消息传递标准平台的MP I(Message Passing I nterface)论坛,该论坛不仅包括了许多P VM、Exp ress等的研制者及并行程序用户,还吸收了许多著名计算机厂商的代表。论坛于1994年5月,公布了MP I标准。MP I是一种为消息传递而开发的广泛使用的标准,它为消息传递建立了一个可移植的、高效、灵活的标准。 1 MP I的原理与特征 MP I是一个函数库,而不是一门语言,它是一种消息传递模型,它的最终目的是服务于进程间通信。MP I作为一个并行程序库的开发平台,为用户编写和运行程序提供了便利的条件。由于MP I是基于消息传递机制构建的系统,因此它在体系结构为分布存储的并行机中有很宽阔的应用空间,它可以应用在各种同构和异构的网络平台中。它的编程语言可以为Fortran77/90、C/C++。在Fortran77/90、C/C++语言中都可以对MP I的函数进行调用,它作为一种消息传递模式的并行编程环境,MP I并行程序要求将任务进行划分,同时启动多个进程并发的执行,而各个进程之间通过MP I的库函数来实现其中的消息传递。 MP I与其它并行编程环境相比,显著的特点有: (1)可移植性强,能同时支持同构和异构的并行计算; (2)可伸缩性强,允许并行结构中的节点任意增加或减少; (3)能很好的支持点对点通信和集体通信方式; (4)对C语言和Fortran语言的支持,使其能很好的满足各种大规模科学和工程计算的需要。 这样,以MP I作为公共消息传递接口的并行应用程序就可以不作任何改动的移植到不同种类和型号的并行机上,也能够正常运行,或者移到网络环境中也一样。 2 MP I的基本函数 MP I为消息传递和相关操作提供了功能强大的库函数,MPl-1中有128个,MP I-2中有287个库函数。但是从理论上来说,MP I的所有通信功能都可以用它的6个基本调用来完成,即使用这6个函数可以实现所有的消息传递并行程序。这六个函数分别为呼(Fortran77语言的调用格式来描述): (1)MP I初始化 MP I程序的初始化工作通过调用MPl l N I T(I ERROR)来实现,所有MP I程序的第一条可执行语句都是 收稿日期:2004210221 基金项目:河北省自然科学基金项目(E2004000245) 作者简介:杨爱民(19782),男,河北顺平人,河北理工大学理学院教师,硕士。

win7下vs+ivf+mpi配置

Win7/win8系统下visual studio+intel visual fortran 的安装 & windows 下mpi配置 第一部分所需组件: 虚拟光驱daemon tools(免费的lite版就可以)或者Ultra iso Visual studio 2012.iso 安装文件更新补丁文件patch_KB2781514.exe,没有补丁,装完Visual Studio之后点击更新程序提示进行更新也可以。 Intel visual fortran composer XE 2013 及注册.lic文件 Mpi实现(32位机和64位机选用) 第二部分软件安装 先安装Visual studio 2012再安装Intel visual fortran,最后安装mpich2。Visual studio 2012的安装, 1、安装虚拟光驱daemon tools 图略。 2、载入VisualStudio2012镜像

3、载入之后再磁盘窗口可以看到下图 4、点击进入,双击运行安装程序 5、接下来就是30分钟左右的等待时间(vs的确很庞大。。)

6、安装完vs2012之后,在开始菜单找到程序运行,第一次运行默 认环境设置选择C++,如图

7、这时,右下角会出现更新提示,点击进行更新 8、这两个更新是比较慢的,可以省略这一步,直接安装前面提到 的补丁patch_KB2781514.exe 直接双击安装,大概5分钟装完。 9、至此VS2012安装完毕,注意补丁是必须的。 IVF的安装 1、直接双击安装文件安装, 2、下一步,下一步,直到Activation,选择choose alternative activation

消息传递并行编程环境MPI

国家973项目高性能计算环境支持讲座 MPI与PETSc 莫则尧 (北京应用物理与计算数学研究所)

个人介绍 莫则尧,男,汉族,1971年7月生,副研究员:●1992年国防科技大学应用数学专业本科毕业; ●1997年国防科技大学计算机应用专业并行算法 方向博士毕业; ●1999年北京应用物理与计算数学数学博士后流 动站出站,并留所工作; ●主要从事大规模科学与工程并行计算研究。

消息传递并行编程环境MPI 一、进程与消息传递 二、MPI环境的应用现状 三、MPI并行程序设计入门(程序例1) 四、初步的MPI消息传递函数 五、作业一 六、先进的MPI函数 七、MPI并行程序示例2(求解- u=f); 八、MPI环境的发展 九、作业二

一、进程与消息传递 1.单个进程(process ) ● 同时包含它的执行环境(内存、寄存器、程序计数器等),是操作系统中独立存在的可执行的基本程序单位; ● 通俗理解:串行应用程序编译形成的可执行代码,分为“指令”和“数据”两个部分,并在程序执行时“独立地申请和占有”内存空间,且所有计算均局限于该内存空间。 2.单机内多个进程: ● 多个进程可以同时存在于单机内同一操作系统:由操作系统负责调度分时共享处理机资源(CPU 、内存、存储、外设等); ● 进程间相互独立(内存空间不相交):在操作系统调度下各自独立地运行,例如多个串行应用程序在同一台计算机中运行; ● 进程间可以相互交换信息:例如数据交换、同步等待,内存

些信息在进程间的相互交换,是实现进程间通信的唯 一方式; ●最基本的消息传递操作:发送消息(send)、接受消 息(receive)、进程同步(barrier)、规约(reduction); ●消息传递的实现:共享内存或信号量,用户不必关心; 3.包含于通过网络联接的不同计算机的多个进程: ●进程独立存在:进程位于不同的计算机,由各自独立 的操作系统调度,享有独立的CPU和内存资源; ●进程间相互信息交换:消息传递; ●消息传递的实现:基于网络socket机制,用户不必关 心; 4.消息传递库函数: ●应用程序接口(API):提供给应用程序(FORTRAN、 C、C++语言)的可直接调用的完成进程间消息传递

MPICH 的安装使用和MPI原理分析

MPICH 的安装使用和MPI原理分析MPICH的安装和使用 运行mpich2-1.3.2p1-win-ia32.msi,填写passphrase,默认为behappy,选择默认路径安装。 运行wmpiregister, 注册当前的管理员用户。 使用建立和编译MPI程序:新建一个项目,设置项目属性,将MPICH2\lib 目录添加到C++连接的library path内,将MPICH2\include 目录添加到C++链接的Include Path内,在程序属性的链接器->命令行中添加mpi.lib,编译和生成程序。 将结果exe程序拷贝到MPICH2\bin 目录下,运行mpiexec程序,在Application内添加要我们运行的exe程序。选择进程数目,然后Execute,就会显示多个进程的执行情况。 MPICH程序原理 MPI过程就好像一个几步的过程调用,通过初始化,设置进程数,运行进程,进程间发送和接受消息,结束这些步骤来完成。 每个步骤都有基本函数相对应。 MPI_Init (*argc,*argv);//初始化MPI环境 MPI_Comm_size (comm,*size) ;//返回同组内进程数 MPI_Comm_rank (comm,*rank) ;//返回该进程在组内的进程号,从0开始 MPI_Send(buf,count,datatype,dest,tag,comm); //向目标进程发送buf内的count个datatype数据 MPI_Recv(buf,count,datatype,source,comm,status);//接收消息 MPI_Finalize ();//结束 MPIπ的计算程序说明 #include "mpi.h" #include #include double f(double x) { return(4.0/(1.0+x*x)); } int main (int argc,char * argv[]) { int done =0,n,myid,numprocs,i; double PI25DT=3.141592653589793238462643; double mypi,pi,h,sum,x;

MPI并行编程系列二快速排序

MPI并行编程系列二快速排序 阅读:63评论:0作者:飞得更高发表于2010-04-06 09:00原文链接在上一篇中对枚举排序的MPI并行算法进行了详细的描述和实现,算法相对简单,采用了并行编程模式中的单程序多数据流的并行编程模式。在本篇中,将对快速排序进行并行化分析和实现。本篇代码用到了上篇中的几个公用方法,在本篇中将不再做说明。 在本篇中,我们首先对快速排序算法进行描述和实现,并在此基础上分析此算法的并行性,确定并行编程模式,最后给出该算法的MPI实现。 一、快速排序算法说明 快速排序时一种最基本的排序算法,效率相对较高。其基本思想是:在当前无序数组R[1,n]中选取一个记录作为比较的"基准",即作为排序中的"轴"。经过一趟排序后,当前无序数组R[1,n]就会以这个轴为核心划分为两个无序的子区r1[1,i-1],r2[i,n]。其中左边的无序子区都会比"轴"小,右边的无序子区都会比"轴"大。这样下一趟排序,我们就可以对这两个子区用同样的方法进行划分排序,知道所有的无序子区中的记录均排好为止。 根据算法的说明,快速排序时一个典型的递归算法,算法描述如下: 无序数组R[1],R[2],.,R[n] quick_sort(R,start,end) if(start end) r=partion(R,start,end) quick_sort(R,start,r-1) quick_sort(R,r+1,end) endif end quick_sort方法partion的作用就是选取"轴",并将数组分为两个无序子区,并将该"轴"的最终位置返回,在这里我们选择数组的第一个元素为"轴",其算法描述为: partion(R,start,end) r=R[start] while(start end)

mpiblacs安装

在进行mpiblacs安装前需要先安装g77 (一) 参考别人的博客---"现在编译器变化很快,一不小心就落后于时代。过去的不少程序都是用g77编译的,在新的Ubuntu 10.10 Linux系统下,g77已经被gfortran完全替代了。然而,问题是gfortran并不能完全兼容过去的g77,完成修改程序似乎也是个不大可能的任务。。无奈,只好已业余者的身份自己摸索。" 我用的Ubuntu 10.04,可以自动安装新版gcc(但是已经没有了g77)。我是用如下方法安装g77的。 1. 在/etc/apt/source.list中最后头添加如下源(以root的身份,或用 sudo): deb https://www.360docs.net/doc/d83250326.html,/ubuntu/ hardy universe deb-src https://www.360docs.net/doc/d83250326.html,/ubuntu/ hardy universe deb https://www.360docs.net/doc/d83250326.html,/ubuntu/ hardy-updates universe deb-src https://www.360docs.net/doc/d83250326.html,/ubuntu/ hardy-updates universe 2. 安装aptitude sudo apt-get install aptitude 3. 然后执行如下: sudo aptitude update sudo aptitude install g77 4. 现在用g77就可编译我原来的程序了。 (二)BLACS安装 官方参考文档:blacs_install 1.下载相关文件https://www.360docs.net/doc/d83250326.html,/blacs/Blacs.html 我的安装目录是/mpi/blacs/ 2.解压文件gunzip –c Blacs(文件名) | tar xvf – 3.在安装目录/mpi/blacs/下创建文件Bmake.inc 4.选择自给所用系统的类型,BLACS/BMAKES/中包含了针对不同系统的Bmake.in c,拷贝合适的文件到第3步创建的Bmake.inc。 我的系统用的是MPI的LINUX系统,操作如下: cp BMAKES/Bmake.MPI-LINUX Bmake.inc 5.配置Bmake.inc

在windows下运行MPI配置

MPICH2的配置 Windows环境下 1.安装MPICH2,假设程序安装在C:\Program Files\MPICH2目录下 2.将MPICH2路径C:\Program Files\MPICH2\bin加入到PA TH路径下: 3.注册MPICH2,有两种方式 1.窗口式:点击C:\Program Files\MPICH2\bin目录下的wmpiregister.exe, 出现如下窗口 输入本地计算机的用户名和密码,点击Register,点击OK 2.命令行式,开始->运行…->输入cmd->输入mpiexec –register, 出现如下窗口

依次输入用户名和密码再确认一次,即可输入 4.打开MPICH进程管理器服务程序: 控制面板->管理工具->服务,找到如下服务 确认其已经打开 5.在VC项目中的程序配置 1.打开VC6,在菜单工具->options…下的Directories下添加Include files: 2.添加Library files:

3.以C项目为例,新建一个C项目MPITest,新建一C文件HelloWorld.c, 文件内容如下: #include “mpi.h” #include int main(int argc, char** argv) { MPI_Init(&argc, &argv); printf(“Hello World!\n”); MPI_Finalize(); return 0; } 4.编译与连接:在工程菜单下的Setting…下选择Link选项卡,加入库文件mpi.lib,对于C++文件,加入cxx.lib和mpi.lib文件,对于fortran文件,VC6中加入fmpich2s.lib,VC2008中加入fmpich2.lib文件

HPC安装mpi

Quick Install of Open MPI with Grid Engine
A prerequisite to this install log is a configured and validated Sun Grid Engine (SGE) installation. Read more about that at Deploying Sun Grid Engine on a Cluster.
The Open MPI Project is an open source MPI-2 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. https://www.360docs.net/doc/d83250326.html,
Download and build the source rpm:
# cd /usr/global/src/ # # rpm -ihv openmpi-1.4.1-1.src.rpm # rpmbuild -bb --define 'configure_options --with-sge --with-contrib-vt-flags=--disable-iotrace' /usr/src/redhat/SPECS/openmpi-1.4.1.spec wget https://www.360docs.net/doc/d83250326.html,/software/ompi/v1.4/downloads/openmpi-1.4.1-1.src.rpm
Note that building with the "--with-sge" option enables openmpi to be gridengine-aware. Also note that the option "--with-contrib-vt-flags=--disable-iotrace" fixes the following compiler error:
vt_iowrap.c:1242: error: expected declaration specifiers or '...' before numeric constant vt_iowrap.c:1243: error: conflicting types for '__fprintf_chk'
Install the binary rpm on the head node and create a parallel execution environment template file.
# rpm -ihv /usr/src/redhat/RPMS/x86_64/openmpi-1.4.1-1.x86_64.rpm # vim ompi.template
Paste the following into the ompi.template file:
pe_name slots user_lists xuser_lists start_proc_args ompi 64 NONE NONE /bin/true

Abaqus安装步骤(自己总结)

Abaqus安装 一,安装visual.studio.2008 虚拟光驱打开,只需在安装时选择custom,然后在C++下选X64位。 二、fortan安装 虚拟光驱载入https://www.360docs.net/doc/d83250326.html,piler.Professional.v11.1.038-SPYRAL,安装,需要license文件时,选择E:\张海\新程序\新 ABAQUS\fortranv9.1\https://www.360docs.net/doc/d83250326.html,piler.Pro.v9.1.024\Crack文件夹中的intel_TBE. 三、ABAQUS安装 1.虚拟光驱载入DVD2,安装document,直接安装即可。 2.虚拟光驱载入DVD1,安装license和product,首先安装license,安装license utility。 3.安装之后,点程序abaqus licensing 中licensing utilities,配置license service。 点config service,service name可随便起,path to the lmgrd.exe,可直接点browse 打开lmgrd.exe。在abaqus盘中,crack文件夹中aba6101,复制到其它目录下,用记事本打开,把第一行的server变为计算机的名字。 然后path to the license file,选择刚改过的aba6101.dat文件。Log file是不需要的。配置完成,点use service 和 start server at power up,然后点save service。然后点start/stop/reread,点start server。 4.之后开始安装products,其中一部中license server 1 应填写27011@zhanghai(计算 机名)。然后装products其中有一部是microsoft HPC MPI Redistributable Pack可能安装不了,这个是做并行计算用的,可不用管,直接继续安装abaqus。 四、调整 1.找fortran安装文件夹中C:\Program Files (x86)\Intel\Compiler\11.1\038\bin\intel64\ifortvars_intel64.bat,将ifortvars_intel64.bat,找到这个路径。 2.打开abaqus安装目录的command文件夹D:\SIMULIA\Abaqus\Commands,找aba6101这个文件,点编辑,原来为 @echo off "d:\SIMULIA\Abaqus\6.10-1\exec\abq6101.exe" %* 改为 @call "C:\Program Files (x86)\Intel\Compiler\11.1\038\bin\intel64\ifortvars_intel64.bat" @echo off "d:\SIMULIA\Abaqus\6.10-1\exec\abq6101.exe" %* 然后保存即可。 五、验证 程序-abaqus6.10-1,——abaqus verification,进行验证。

MPI安装与运行报告

MPI安装于运行报告 本机运行环境: 机器型号:联想G450 处理器:Pentium(R)Dual-Core CPU T4200 @ 2.00GHz 运行内存(RAM):2GB 操作系统:Windows 7(32位) 程序开发环境:Visual Studio 2008 MPI版本: mpich2-1.3.2p1-win-ia32安装程序 详细安装步骤: 1、运行mpich2-1.3.2p1-win-ia32.msi。 安装过程中,会要求设置一个passphrase。我的机器上默认的passphrase是beHappy,很有意思的密码。设置这个东西很重要,一定要记住;下面会说到为什么。 2、安装完之后,不知道下一步怎么进行了。打开刚才安装的MPICH2 的快捷方式目录,发现了一个README文件。打开之后,发现了MPICH2的使用方法介绍,于是按照其中的指示,我进行了第一个MPI并行程序的编写。 我使用的是VC++2008。首先创建一个新的工程,取名为MPITest。 添加MPI库的支持: 按照README中的指导,应该首先将MPI的头文件目录包含到项目中去。结果在项目属性中找了半天,也没有找到添加头文件目录的位置,只找到了包含库文件的位置,我安装MPICH2的目录为D:\Program Files\MPICH2,将MPICH2的库文件添加到如下面图1所示的位置即可。 最后才反应过来,这个工程还是空的,没有任何文件,可能跟这个有关系吧。于是,马上新建了一个Cpp文件main.cpp,将老师PPT中的例子程序拷贝进去。

图 1 果然,新建了这个cpp文件之后,项目属性中多出了C/C++这样一项,于是,就可以在其中设置包含文件的目录了,相应的配置如下面图2所示。 图 2 设置好这些文件之后,编译程序,结果在连接的时候报错,类似于“main.obj : error LNK2019: 无法解析的外部符号_MPI_Finalize,该符号在函数 _main 中被引用”,这样的错误出现了六个。再看README文档,发现了这样一句话:

MPI并行编程系列二快速排序

MPI 并行编程系列二快速排序 阅读:63 评论:0作者:飞得更高发表于2010-04-06 09 :00 原文链接 在上一篇中对枚举排序的MPI并行算法进行了详细的描述和实现,算法相对简单,采用了并行编程模式中的单程序多数据流的并行编程模式。在本篇中,将对快速排序进行并行化分析和实现。本篇代码用到了上篇中的几个公用方法,在本篇中将不再做说明。 在本篇中,我们首先对快速排序算法进行描述和实现,并在此基础上分析此 算法的并行性,确定并行编程模式,最后给出该算法的MPI实现。 一、快速排序算法说明 快速排序时一种最基本的排序算法,效率相对较高。其基本思想是:在当前 无序数组R[1,n] 中选取一个记录作为比较的"基准" ,即作为排序中的"轴" 。经过一趟排序后,当前无序数组R[1,n] 就会以这个轴为核心划分为两个无序的子区r1[1,i-1],r2[i,n] 。其中左边的无序子区都会比"轴"小,右边的无序子区都会比" 轴" 大。这样下一趟排序,我们就可以对这两个子区用同样的方法进行划分排序,知道所有的无序子区中的记录均排好为止。 根据算法的说明,快速排序时一个典型的递归算法,算法描述如下:无序数组R[1],R[2],.,R[n] quick_sort(R,start,end) if(start end) r=partion(R,start,end) quick_sort(R,start,r-1) quick_sort(R,r+1,end) endif end quick_sort 方法partion 的作用就是选取" 轴" ,并将数组分为两个

无序子区,并将该" 轴" 的最终位置返回,在这里我们选择数组的第一个元素为"轴" ,其算法描述为: partion(R,start,end) r=R[start] while(start end) while((R[end]=r)&&(start end)) end- end ehile R[start]=R[end] while((R[start]r)&&(start end)) start++ end wile R[end]=R[start] end while R[start]=r return start end partion 该排序算法的性能好坏主要取决于" 轴" 的选定,即无序数组的划分是否均衡。最好的情况下,无序数组每次都会被划为两个均等的无序子区,这是算法的负责度为o(nlogn) ;最坏的情况,无序数组每次划分都是左边n-1 个元素,右边0 个元素,这时算法的复杂度为 o(n A2)。在通常的情况下,该算法的复杂度会依然保持在o(nlogn) ,上只不过具有更高的常数因子。因此,选定一个有效地"轴",成为该算法的关键。一般情况下,会选定无序数组的第一个,中间或者是最后一个元素作为算法的"轴",我们可以对着三个元素进行比较,取大小居中的那个元素作为该算法的" 轴" 。 、快速排序算法的串行实现 确定在什么条件下终止递归操作。主函数代码如下: 1:void quick_sort_function(int*array,int start,int last){2

相关文档
最新文档