(计算机应用技术专业论文)petsc库并行性能分析和网格服务实现.pdf_第1页
(计算机应用技术专业论文)petsc库并行性能分析和网格服务实现.pdf_第2页
(计算机应用技术专业论文)petsc库并行性能分析和网格服务实现.pdf_第3页
(计算机应用技术专业论文)petsc库并行性能分析和网格服务实现.pdf_第4页
(计算机应用技术专业论文)petsc库并行性能分析和网格服务实现.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

(计算机应用技术专业论文)petsc库并行性能分析和网格服务实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 摘要 p e t s c ( p o r t a b l e ,e x t e n s i b l et o o l k i tf o rs c i e n t i f i cc o m p u t a t i o n ) 是美国a r g o n n e 国家实验室开发的可移植可扩展科学计算工具箱,目的是 在高性能计算机上数值求解偏微分方程及相关问题。本文以自强2 0 0 0 高性 能计算机为平台,对应用并行库函数求解大型科学计算问题的关键技术进 行研究。实现p e t s c 并行库和大型高性能科学计算用户之间的无缝连接。 本文首先对并行函数库p e t s c 进行研究,深入分析p e t s e 库的线性代 数数值计算相关接口功能。在自强2 0 0 0 高性能计算机上通过实例对p e t s c 库线性代数数值计算的并行性能进行了分析。在此基础上,本文开发了扩 展p e t s c 库函数功能的系统软件,该系统软件能使p e t s c 管理和调度集群 资源、控制和调度进程、处理和保存运行结果。本文通过结合g l o b u s 和p b s 技术,在以自强2 0 0 0 为主节点的网格试验床上实现了p e t s c 库的网格服务 功能。 【关键词】并行计算,m p i ,p e t s c ,p b s ,网格服务,集群系统 v 上海大学硕士学位论文 t h ep o s t g r a d u m et h e s i so f s h a n g h a iu n i v e r s i t y a b s t r a c t p e t s ci sap o r t a b l ea n de x t e n s i b l et o o l k i tf o rs c i e n t l f i c c o m p u t a t i o nt h a tw a sd e v e l o p e db ya r g o n n e1 a b o r a t o r yi n u s a i ti s p r i m a r i l yu s e d t os o l v ep d ea n do t h e rr e l a t e dp r o b l e m s t h ep a p e r m a k e ss c i e n t i f i cr e s e a r c h e so nt h ek e yt e c h n o l o g i e so fs c i e n t i f i c c o m p u t a t i o n a b o u tl i n e a r q u e s t i o n o nt h e p l a t f o r ms u h p c s z i q i a n 9 2 0 0 0 t h ep a p e rd o e sr e s e a r c ho np e t s cf i r s t l y ,a n dt h ef u n c t i o no f l i n e a re q u a t i o na p l so fp e t s ca r ea n a l y z e da n ds u m m a r i z e d p e t s c p a r a l l e lp e r f o r m a n c eo f s c i e n t i f i cc o m p u t a t i o na b o u t1 i n e a rq u e s t i o n i se x h a u s t i v e l ya n a l y z e db yr u n n i n gt y p i c a lp r o g r a m o ns u h p c s a l s o , a s y s t e m s o f t w a r ei sd e v e l o p e df o rp e t s c t o m a n a g ea n d s c h e d u l e r e s o u r c e so nc l u s t e r ,c o n t r o la n ds c h e d u l ep r o c e s s ,p r o c e s sa n ds a v e c o m d u t a t i o nr e s u l t f i n a l l y ,c o m b i n i n gw i t hp b sa n dg l o b u s ,p e t s c g r i ds e r v i c ei sr e a l i z e do nt h eg r i dt e s tb e dc o m p o s e do fs u h p c sa n d o t h e rn o d e s 【k e yw o r d s 】p a r a l l e l c o m p u t a t i o n ,m p i ,p e t s c ,g l o b u s ,p b s ,g r i d s e r v i c e ,c l u s t e r v 原创性声明 本人声明:所呈交的论文是本人在导师指导下进行的研究工作。 除了文中特别加以标注和致谢的地方外,论文中不包含其他人已发 表或撰写过的研究成果。参与同工作的其他同志对本研究所做的 任何贡献均已在论文中作了明确的说明并表示了谢意。 签名:日期 本论文使用授权说明 本人完全了解上海大学有关保留、使用学位论文的规定,即: 学校有权保留论文及送交论文复印件,允许论文被查阅和借阅;学 校可以公布论文的全部或部分内容。 ( 保密的论文在解密后应遵守此规定) 签名:导师签名_ 一日期 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y 1 1 引言 第一章绪论 现代的生命科学,信息科学,天体物理,应用化学,天气预报等许多方面 都越来越离不开基于高性能计算机的大型科学计算。加上p e t s c 研制并行 函数库和大型科学计算用户使用计算机的无缝连接,发挥并行计算机的作 用,提高用户解题效率,提供网格计算接口都具有非常重要的意义。 以往人们是基于各种体系结构的高性能计算机来开发并行代码的。方 法主要有以下三种:1 例程库( m p i ,p v m ) :2 扩展( f o r t r a n g o ) :3 编译器 注释( s g i p o w e r c ,h p f ) 。但无论那种方法,并行代码开发周期长,难度大。新 开发出来的基于m p i 及b l a s ,l a p a c k 的p e t s c 库,突破性地解决了这一问题。 使得开发难度,开发周期大大降低。但是p e t s c 库并没有提供与用户的无缝 连接。用户直接使用p e t s c 并行库有一定难度。 1 2p e t s c 库国内外研究现状 由于p e t s c 库的优秀性能,自产生的那天起就得到广泛的关注和应用a 在国外p e t s c 库已被应用于材料石油,航空,生物,化学,物理,核爆炸等学 科和领域。下面几个就是p e t s c 应用成功例子。 i p e t s e 应用于石油方面的例子,2 】世纪新一代油藏数值模拟框架, 它是u s a t e x a s 大学浊藏数值模拟中心开发的。 2 p e t s c 应用于空气动力学数值模拟的例子,多模型多区域耦合流场 问题,它是u s a 自然科学交叉学科重点项目。 3 p e t s c 应用于天体物理的例子,恒星热核爆炸问题数值模拟,它是 由u s ac h i c a g o 大学开发的。 诸如上面的例子还有许多,可见其应用已经十分广泛。 在我国对p e t s c 库的研究和应用处于起步阶段。中国科学院,清华大学, 北京大学等单位对p e t s c 库的研究已起步。上海大学在自行研制的“自强 2 0 0 0 ”集群式超级计算机上开展高性能计算的应用研究,启动了p e t s c 库 的十个项目。本篇论文就是课题之一。在工业中也有不少的应用。串行油 减模拟器并行化就是成功使用p e t s c 案例之一。 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y 1 3 自强2 0 0 0 高性能计算机系统介绍 我们的工作是基于自强2 0 0 0 集群系统开展的。这里简单介绍下自强 2 0 0 0 集群系统。图i l 是自强2 0 0 0 的网络结构。 自强2 0 0 0 ( s u h p c s ) 上海大学计算机学院与清华大学计算机系合作研制 的高性能集群计算机。该系统采用s m p 超结点通过高速网络1 2 8 g b p s 的 m y r i n e t 和l o o m b p s 的e t h e r n e t 两级互联方式构成。2 0 0 1 年4 月通过鉴定 该系统峰值速度达4 5 0 0 亿f l o p s 。操作系统是l i n u xr e d h a t ,该系统分” 图1 - 1 自强2 0 0 0 网络结构 主系统”和”前置处理系统”。前置处理系统直接和i n t e r n e t 网络连接。 它还起到w e b 服务器的作用。在该系统上配置有符合国际标准的m p i ,p v i d 并行编程环境,并行编译器h p f ,以及通用的编程语言c ,f o r t r a n ,j a v a 。该 系统提供消息传递模型和分布式共享存储型等。该系统为用户提供友好的 实用软件工具,如并行计算性能评测工具,i n t e r n e t 网络环境远距离查询管 理软件,及大型关系数据库等。 1 4 本文的研究工作 并行求解函数库及高性能计算机是大型科学计算必不可少的组成部 分,而研制p e t s c 库和用户使用计算机的无缝连接,发挥高性能计算机的 作用,提高解题效率,提供网格计算服务就具有十分重大的意义。 本文主要阐述了以下几个方面。1 对并行函数库p e t s c 进行研究,深 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y 入分析p e t s c 库的线性代数数值计算相关部分接口功能,详细介绍了向量 创建和赋值、初始化、基本运算、释构,矩阵的创建初始化、聚集、存储 预分配、基本运算、释构,以及线性代数解法器、k r y l o v 方法等接口,详 细分析了这些接口的性能,总结了这些接口的功能;2 归纳了p e t s c 求解 线性方程的一般过程,并阐述如何求解奇异方程组和如何使用p e t s c 对外 部线性解法器的接口。以自强2 0 0 0 高性能计算机为平台,通过测试典型的 求解线性方程组的实例,对p e t s c 库线性代数数值计算的并行性能进行全 面分析,深入研究了m p i c h 对p e t s c 的关键作用;3 为使p e t s c 能管理和 调度集群资源,控制和调度进程,控制程序运行方式,处理和保存运行结 果,提供p e t s c 对用户的无缝连接,在p e t s c 上扩展了一个实现这些功能 的系统软件,并详细描述了这个系统软件的原理和实现过程。本文还给出 如何实现,p e t s c 并行程序运行时对各结点的通信量、c p u 的使用率、内存 的空闲率等重要信息进行实时检测:4 研究实现p e t s c 库的网格服务的方 案,通过结合g l o b u s 和p b s 技术,在以自强2 0 0 0 为主结点的网格试验床 上实现了p e t s c 库的网格服务功能。结合有限差分离散二维l a p l a c 问题实 例说明如何使用自强2 0 0 0 上p e t s c 库网格服务。 上海大学硕士学位论文 t h ep o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 第二章p e t s c 库线性接口功能分析 2 1p e t s c 库简介 p e t s e ( p o r t a b l e ,e x t e n s i b l et o o l k i tf o rs c i e n t i f i cc o m p u t a t i o n ) 是美国a r g o n n e 国家实验室开发的可移植可扩展科学计算工具箱。目的是 在高性能计算机上数值求解偏微分方程及相关问题。p e t s c 是基于并行库 m p i 以及数孝计算包l a p a c k ,b l a s 的。它用m p i ( m e s s a g ep a s s i n gi n t e r f a c e ) 来实现并行所需通信,包括进程间的和远程的。数学计算是通过调用l a p a c k 及b l a s 来实现的。b l a s 是执行向量和矩阵运算的子程序集合,它分三级, l e v e l l 是v e c v e c 操作:l e v e l 2 是v e c m a t r i x 操作:l e v e l 3 是m a t r i x m a t r i x 操作。l a p a c k ( l i n e a ra l g e b r ap a c k a g e ) 是对l i n p a e k ,e l s p a c k 的改进,它加大了计算粒度,提高了并行运算的效率,而且它是基于b i a s l e v e l 3 的。图2 一l 反应了l a p a c k 及b l a s 之间的关系。 ,广i 函_ - l j 丑v:- 臣妥 l ( 鲴 图2 - ll a p a c k 及b i a s 之间的关系 p e t s c 采用面向对象程序设计风格,用标准c 语言实现。它还提供了标 准c 语言( c + + ) 和f o r t r a n 语言接口。p e t s c 强调以面向对象的数据结构 为中心设计数值库软件。 p e t s c 库是通过m p i 来通信的。但通信的过程是透明的。用户不用显式 调用m p i 的通信接口。p e t s c 库的组件会自动完成相应的通信。p e t s c 留给 用户使用就是一些数学组件。图2 2 是它的层次结构图。 p e t s c 库的主要数学组件有如下几个。 1 向量( v e c t o r s ) :创建、复制和释放指定长度和自由度的串行或m p i 并行向量( 数据段被自动分配, n ;f n n 进程) , 向量操作,比如,元素的 赋值与索引、类似于b i a s 的向量运算、向量的可视化显示等。 2 索引与排序( i n d e xs e t s ,o r d e r i n g ) :向量和矩阵元素的局部与全 局、自然与多色序号的对应关系; 建立和释放任意两个集合的元素之间的 上海大学硕士学位论文 t h ep o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 对应和映射关系:适合无结构网格在进程间的任意网格剖分,以及通过数 据映射操作,完成相应先素索引点无规则网格拟边界数据交换的消息传递。 图2 2p e t s c 库层次结构 3 阵列( d a :d i s t r i b u t e da r r a y ) :在规则网格之上,一维、二维和 三维( i = l ,l ,j = l ,n ,k = l ,n ) ,自动或指定阵列在进程间的 区域划分,并沿拟边界设置宽度任意( 离散格式需求) 的影象( g h o s t ) 数 组,存储邻近进程在相应位置包含的网格点的数值;阵列元素可包含多个 自由度,且可以任意索引和访问,属于向量的一种特殊情形,多向量操作 均适合于它;它是计算中应用最为广泛的数据结构;序和全局序可以索引 和映射。 4 ,矩阵( m a t r i c e s ) :维数和自由度大小的串行和m p i 并行矩阵的生成、 复制和释放;元素的索引与访问;矩阵压缩存储格式:a i j 稀疏行、b a i j 块稀疏行、b d i a g 块对角;b i a s 的基本矩阵操作,以及矩阵元索的标准或 可视化输出;无结构网格划分工具( p a r m e t i s ) 的并行矩阵的形成与使用。 5 数值方程解法器( s l e s ) :稀疏矩阵与向量数据结构:s l e s 的建立、 访问、设置和释放;实现的解法器有k r y l o v 子空间方法( g m r e s 、c g 、c g s 、 b i c g s t a b 、t f q m r 、r i c h a r d s o n 、c h e b y c h e v ) ,预条件( a d d i t i v es c h w a r z 、 b l o c kj a c o b i ( i l u ) 、j a c o b i 、s e r i a li l u 、s e r i a li c e 、s e r i a ll u ) 。 6 线性代数方程与无约束优化方程解法器( s n e s ) :稀疏矩阵、向量和 磐 嘤 t h ep o s f g r a 埔d u a t e 烤t h e 砒s i so f 靴s h a 馘n g h a ;u n i v 。啪 摹= 了一一 s l e s 数据结构:s n e s 的建立、访问、设置和释放。 7 p d e 或o d e 时间依赖方程解法器( t s ) :基于稀疏矩阵、向量、s l e s 和s n e s 数据结构:t s 的建立、访问、设置和释放:方法有e u l e r 、b a c k w a r d e u l e r 、拟时间步逼近定常解等。 8 对象的打印、图形和可视化输出。 9 选项数据库支持。有用户指定的算法和功能部件的性能监控,可在 m p i 程序运行时由命令行参数输入,非常方便。图2 - 3 是p e t s e 库的组成结 构。 图2 3p e t s c 库的组成结构 p e t s e 能提供算法的工具有以下几种。分布式存储并行机求解大规模稀 疏线性代数系统库a z t e c :线性系统求解预条件库h y p r e ;串行非线性优化 问题数值库o p t 十+ ;并行可扩展科学计算工具箱p e t s c ,它提供大量面向对 象的并行代数数据结构、解法器和相关辅助部件,适合并行可扩展求解p d e 方程( 有限差分、有限元、有限体离散的隐式和显示格式) ;并行常微分方 程求解库p v o d e 代数系统直接求解库s u p e r l u 。 p e t s c 能使用算法开发辅助工具有以下几种。以共享存储并行程序设计 风格简化分布存储并行机上程序设计g l o b a la r r a y s ;网格生成辅助工具 o v e r t u r e ;并行面向对象环境与工具箱p o e t ;并行面向对象方法与应用 上海大学硕士学位论文 t h ep o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y p o o m a ,提供大量适合有限差分和粒子类模拟方法的数据并行程序设计 ( h p f ) 的c + + 类。 p e t s c 运行调试与支持的工具还有c u m u l v s ,g l o b u s ,p a w s ,s i l o o n , t a u ,t u l i p 。 p e t s c 支持的软件开发工具有a t l a s p h i p a c ,针对当代计算机体系 结构的高性能特征,自动产生优化的数值软件,可与手工调试的b l a s 库相 比较。 p e t s c 可移到c r a yt 3 d ,t 3 e ,o r i g i n2 0 0 0 ,i b ms p ,h pu x ,a s c ir e d , b l u em o u n t a i n ,n o w s ,l i n u x ,a l p h a 等系统上去,有相当强的移植性。 用户根据应用需求,通过调用p e t s c 子程序建立数据结构( 如向量、 规则网格阵列、矩阵等) ,调用p e t s c 各功能部件( 如索引、排序、基于规 则网格的拟边界数据分布与收集、线性解法器、非线性解法器、常微分方 程解法器、简单的图形输出等) 的子程序来对数据对象进行处理,从而获 取p e t s e 提供的科学计算功能。图2 4 是求解偏微分方程的一般过程。 开。 用户代码p e t s c 库代码 图2 4 时间依赖p d e 求解 p e t s c 库从1 9 9 5 年发展至今。目前的最新版本是2 1 6 。它原代码公 上海大学硕士学位论文 t h ep o s t g r a d u a t et h e s i so f s h a r l g h a iu n i v e r s i t y 2 2 向量运算相关接口功能分析 本节主要分析向量的创建和赋值,初始化,基本运算,释构等。 1 向量的创建与复制 以下是在通讯器c o m m 内所有处理机上的向量,其中m 表示将存储在 局部处理机上的分量个数,m 为向量分量的总数。n 局部或整体维数,但不 是两者都可被设置成p e t s c d e c i d e 以表示用p e t s c 确定它。 v e c c r e a t e ( p e t s cc o m mw o r l d ,p e t s c d e c i d e ,n ,x ) v e c c r e a t e s e q ( p e t s c _ c o m m _ s e l f ,i n tm ,v e c x ) v e c c r e a t e m p i ( m p ic o m mc o i i l m 。i n tm ,i n tm ,v e c x ) 以下几个函数,自动在c o l l l m 的所有处理机上创建适当的向量类型( 串行 或并行) 。选项- v e c t y p e m p i 可与v e c c r e a t e0 和v e c s e t f r o m o p t i o n s 0 一同 来说t 珥m p i 向量的使用,即使对单处理机情形也是这样。 v e c c r e a t e ( m p i c o m n lc o r r l m ,v e c v ) : v e c s e t s i z e s ( v e cv ,i n tm ,i n tm ) ; v e c s e t f r o m o 毗i o n s ( v ) : 当由用户提供的一个数组来创建向量而不是由p e t s c 内部分配数组空间 用以下函数。 v e c c r e a t e s e q w i t h a r r a y ( p e t s c c o m m _ s e l f ,i n tm , p e t s c s c a l a r * a r r a y v e c x ) : v e c c r e a t e m p l w i t h a r r a y ( m p i c o m mc o n l i i l ,i n t m ,i n tm , p e t s c s c a l a r * a r r a y v e c 术x ) : 注意:这里必须提供值m ,它不能是p e t s c d e c i d e 且用户负责提供数组中 足够的空间,m ( p e t s c s c a l a r ) 的大小。 向量一旦创建可以通过一下方式来复制。 v e c d u p l ic a t e ( x ,y ) : v e c d u p l i c a t e ( x ,w ) : v e c d u p l i c a t e v e c s ( x ,3 ,z ) : 2 向量的初始化 设置向量的所有分量为一个单一的值用以下函数。 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y v e c s e t ( s c a l a r * v a l u e ,v e cx ) :比如: i e r r = v e c s e t ( & o n e x ) : i e r r = v e c s e t ( & t w o ,z 1 ) : i e r r = v e c s e t ( t h r e e 。z 2 ) : 在v e c s e t v a l u e s ( v e cx ,i n tn ,i n t * i n d i c e s ,p e t s c s c a l a r * v a l u e s 。 i n s e r t v a l u e ) ;函数中参数n 给出此插入中将被设置的分量的个数。整数 i n d i c e s 包含整体分量索引,v a l u e s 是将被插入的值的阵列。任意处理机可 设置向量的任意分量。 一旦所有的值都已被用v e c s e t v a l u e s 0 插入,必须调用 v e c a s s e m b l y b e g i n ( v e cx ) ,v e c a s s e m b l y e n d ( v e cx ) 来执行任意非局部分量 所需的消息传递。 3 向量的基本运算 向量的基本运算是指向量在数值计算中涉及到的加,减,乘,除,绝 对值,倒数,求模,线性运算等最基本的运算。这些基本运算,在p e t s c 中都有对应的函数。以下是这些函数的总结。冒号前是函数申明,紧跟在 冒号后面的是其数学功能描述。 n o r m _ i : 1 x 。l ;n o r m _ 2 :( ,1x 2 。i ) “2 ;无穷范数为m a x i lx t l : v e c a x p y ( p e t s c s c a l a r 十8 ,v e cx ,v e cy ) :y = y + a 宰x : v e c a y p x ( p e t s c s c a l a r $ a ,v e cx ,v e cy ) :y = x + a y : v e c w a x p y ( p e t s c s c a l a r 女a ,v e cx ,v e cy ,v e cw ) :w 2 a x + y : v e c a x p b y ( p e t s c s c a l a r $ a ,p e t s c s c a l a r 岫,v e cx ,v e cy ) :y = a x + b y v e c s c a l e ( p e t s c s e a i a r $ a ,v e ex ) :x = a x : v e c d o t ( v e cx ,v e cy ,p e t s c s c a l a r 十r ) :r = x + y : v e c t d o t ( v e cx ,v e cy ,p e t s c s c a l a r r ) :r 2x + y : v e c n o r m ( v e cx ,n o r m t y p et y p e ,d o u b l e 木r ) :r = ll x l 。 v e c s u m ( v e cx 。p e t s e s c a l a r r ) :r = x i v e c c o p y ( v e cx ,v e cy ) :y = x : v e c s w a p ( v e cx ,v e cy ) :y = x w h i l ex = y : v e c p o i n t w i s e m u l t ( v e cx ,v e cy ,v e cw ) :w i = x ;半y 1 v e c p o i n t w i s e d i v i d e ( v e cx ,v e cy ,v e cw ) :w i = x i y , v e c m d o t ( i n tn ,v e cx ,v e c4 y ,p e t s c s c a l a r r ) :r i = x + y 【i ; 她夔 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y v e c m t d o t ( i n tn ,v e cx ,v e c + y ,p e t s c s c a l a rr ) :r i = x + y v e c m a x p y ( i n tn ,p e t s c s c a l a ra ,v e cy ,v e cx ) :y = y + e a l x i : v e c m a x ( v e cx ,i n t * i d x ,d o u b l e 十r ) :r = m a xx v e c m i n ( v e cx ,i n t * i d x ,d o u b l e r ) :r = m i nx l v e c a b s ( v e cx ) :x i = lx 。j : v e c r e c i p r o c a l ( v e cx ) :x 。= l x j : v e c s h i f t ( p e t s c s c a l a r s ,v e cx ) :x i = s + x 。 以下是几个本地化运算,在v e c o e t o w n e r s h i p r a n g e ( v e cv e c ,i n t * l o w , l n t * h i g h ) 中参数l o w 表示局部处理机所拥有的第一个分量,而h i g h 说明局 部处理机所拥有的最后一个分加一,这个程序在诸如聚集并行向量中是有用 的。 函数v e c g e t a r r a y ( v e cv ,p e t s c s c a l a r * * a r r a y ) 返回局部于处理机的元 素的一个指针。当对数组的访问不再需要时,用户需调用 v e c r e s t o r e a r r a y ( v e cv ,p e t s c s c a l a r * * a r r a y ) :注意到v e c g e t a r r a y0 和 v e c r e s t o r e a r r a y 0 并不复制向量元素:它们只是使用户直接访问向量元素。 因此,这些程序的调用基本不花时间且可被有效地使用。局部存储的元素的 个数可用v e c g e t l o c a l s i z e ( v e cv ,i n t * s i z e ) 得到:整体向量的长度由 v e c g e t s i z e ( v e cv ,i n t 书s i z e ) 得到。 4 向量的释构 函数v e c d e s t r o y ( v e cx ) 释构一个向量。 而v e c d e s t r o y v e c s ( v e c * v e c s ,i n tn ) 释构一个向量组。 2 3 矩阵运算相关接口及功能分析 本节主要分析矩阵的创建,初始化,聚集,存储预分配,基本运算 矩阵的释构等。 1 矩阵的创建 函数m a t c r e a t e ( m p i _ c o m mc o r 【i l ,i n tm ,i n tn ,i n tm ,i n tn ,m a t a ) 是一 个通用的矩阵构造器。在一台处理机上运行时创建一个串行矩阵,在两台或 多台处理机上运行时创建一个并行矩阵:用户通过选项数据库命令来设置特 殊的矩阵格式。缺省情况下,m a t c r e a t e 0 使用稀疏a i j 格式。 熙 上海大学硕士学位论文 t h ep o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 函数m a t c r e a t e s e q a i j ( p e t s c c o m m s e l f ,i n tm ,i n tn ,i n tn z i n t * n n z ,m a t a ) 创建一个m 行n 列的串行a i j 稀疏矩阵a ,其中n z 或r l n z 被用 于预分配矩阵存储。用户可设置n z = 0 及n n z = p e t s c n u l l ,这样可i j z p e t s c 控 制所有的矩阵存储分配。 函数m a t c r e a t e m p i a i j ( m p ic o m mc o i i l l t l ,i n ti n ,i n tn ,i n tm ,i n tn , i n t d n z ,i n t 槲一r l r l z ,i a t on z ,i n t 车n n n z ,m a t 事a ) 是a i j 格式的并行稀疏 矩阵创建。a 是新创建的矩阵,参数m ,n ,m ,n 分别是局部行和列数及整体行 和列数。局部或整体参数都可用p e t s c d e c i d e 来替代,从而p e t s c 将确定它 们。矩阵在每一台处理机上存储固定个数的行,由m 给定。如果m 是 p e t s c d e c i d e ,则行数由p e t s c 来确定。如果参数m 和n 不使p e t s cd e c i d e , 则用户必须保证它们的选择必须与向量相匹配。为了p e t s c 来控制动态矩阵 存储空间的分配,用户必须设置d n z = o 、o _ n z = 0 、d _ n n z = p e t s c _ n u l l 、o _ n n z = p e t s c _ n u l l 。这些参数选择她说明矩蓐的对角( d _ n z 和d _ n n z ) 和非对角 ( o n 2 和。一n n z ) 部分的非零元信息。 函数m a t c r e a t e s e q d e n s e ( p e t s cc o m m _ s e l f ,i n tm ,i n tn ,p e t s c s c a l a r * d a t a ,m a t a ) 用来创建一个串行的、稠密的、m * n 维的p e t s c 矩阵a 。设置 d a t a 为p e t s cn u l l 以让p e t s c 去控制矩阵的存储分配。 函数m a t c r e a t e m p i d e n s e ( m p ic o m mc o n t r f l 。i n tm ,i n ti i ,i n tm ,i n tn s c a l a r * d a t a ,m a t a ) 创建一个并行、稠密矩阵a ,参数m ,n ,m ,n 分别表 示局部行和列数及整体行和列数,无论是整体或局部参数都可用 p e t s c d e c i d e 来替代,以使它们由p e t s c 来定。此矩阵采用每一台处理机存储 固定的行数,由m 给定,或创建一个m a t 结构而不实际生成矩阵。其中m 和n 是整体矩阵维数( 行数和列数) ,而m * n n 是局部矩阵维数,c t x 是导向任 意用户定义壳矩阵运算所需数p e t s c 来确定如果i l l 为p e t s c d e c i d e 。p e t s c 当 前不能提供并行稠密直接解法器。 函数m a t c r e a t e s h e l l ( m p i c o m mc o m m ,i n tm ,i n tn ,i n t m ,i n tn ,v o i d * c t x ,m a t 栅8 t ) 中m 和n 是整体矩阵维数( 行数和列数) ,而i n 和n 是局部 矩阵维数,c t x 是导向任意用户定义壳矩阵运算所需数据的指针; 函数( m p ic o m mc o g f f l ,i n tm l o c a l ,i n tn ,i n t * i a ,i n t * j a ,i n t * w e i g h t s , m a t * a d j ) 创建一个并行矩阵,它包含将被划分的网格( 或其它图类对象) 的 连通性信息。参数m l o c a l 表明了将被给定处理机提供的图的行数,n 是总列 数;等于所有的m l o c a l 之和。参数i a 和j a 是给定行的行指针和列指针,这 些是并行压缩稀疏行存储的常用格式,使用从0 开始的索引,而不是从1 开 上海大学硕士学位论文 t h ep o s 唱m d u m et h e s i so f s h a n g h a iu n i v e r s i t y 始。 2 矩阵的赋值,聚集及其存储预分配 以下三个函数是用来在矩阵中插入或增加一个m * n 维的逻辑稠密子块的。 m a t s e t v a l u e s ( m a ta ,i n tm ,i n t * i m ,i n tn , i n t * i n ,p e t s c s c a l a r 率v a l u e s ,i n s e r t v a l u e s ) : m a t s e t v a l u e s ( m a ta ,i n tm ,i n t * i m ,i n tn ,i n t * i n , p e t s c s c a l a r * v a l u e s ,a d d _ v a l u e s ) : m a t s e t v a l u e s ( m a ta ,i n tm 。i n t * i m ,i l l tn ,i n t i n , p e t s c s c a l a r * v a l u e s ,a d d _ v a l u e s ) : 整数索引i ms d i n 分别表示待插入的整体行和列数。m a t s e t v a l u e s0 使 用标准c 规定,其中覃亍和列矩阵索引从0 开始,不管所用的存储格式。数组 v a l u e s 是逻辑二维的,包含待插入的值。缺省情况下,值以行为主的顺序给 定,通过调用函数m a t s e t v a l u e s 0 指示p e t s c 按行( i m ) 或列( i n ) 索引集 存储矩阵,可用指令m a t s e t o p t i o n ( m a ta ,m a t _ r o w ss o r t e o ) 和 m a t s e t o p t i o n ( m a ta ,m a t c o l u m n s _ s o r t e d ) 函数m a t g e t o w n e r s h i p r a n g e ( m a ta ,i n t * f i r s t r o w ,i n t * l a s t r o w ) 用 来得到存储在局部处理机上的所有行,从f i r s tr o w 到l a s t _ r o w - - 1 行。 分配新存储并将从旧存储复制的动态过程是本质上非常昂贵的。因此, 当聚集一个a i j 矩阵时要获取好的性能,稀疏矩阵所需的预分配存储是关键。 对于串行有两种方法,1 用标量n z 来说明所期望的每一行的非零元个 数。如果矩阵每一行的非零元个数大致相同一般较好如果你对一个给定行的 非零元个数估计不足那么降低计算速度:2 如果不同的行有非常不同的非零 元个数,应该用一个长度为m 的可选数组n n z 试图给出不同行的( 几乎) 精确 的非零元个数,其中m 为行数。 对于并行,每台处理机都要安串行的两种方法中的一种去设置d n z , d _ n n z ,on z ,o _ n n z 为相应值。 在矩阵聚集的过程中操作一l o g i n f o 将打印预分配的成功的信息。p e t s c 将# 日m a t m p i a i j 格式列出在不同处理机上的属于每一台处理机的元素的个 数。比如: m a t a s s e m b l y b e g i n _ m p i a l 7 :n u m b e ro fo f fp r o c e s s o r v a l u e s1 0 m a t a s s e m b l y b e g i n _ m p i a i j :n u m b e ro fo f fp r o c e s s o rv a l u e s 7 m a t a s s e 【l b l y b e g i nm p i a i j :n u m b e r o fo f fp r o c e s s o rv a l u e s5 , 上海大学硕士学位论文 t h ep o s t g r a d u a t et h e s i s o f s h a n g h a iu n i v e r s i t y 表明了在不同处理机已生成了很少的几个值,另一方面,语句: m a t a s s e m b l y b e g i n _ m p i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论