ImageVerifierCode 换一换
格式:DOC , 页数:42 ,大小:692.04KB ,
资源ID:8326509      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8326509.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(毕业设计论文-高斯消去法求解线性方程组Word下载.doc)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

毕业设计论文-高斯消去法求解线性方程组Word下载.doc

1、 GPU; CUDA; ParallelComputing目 录第一章 绪论11.1 引言11.2 论文研究背景11.3 论文研究的目的和意义21.4 论文结构安排3第二章 求解线性方程组的基本理论42.1 高斯约当消去法42.2 矩阵三角分解法5直接三角分解法5追赶法52.3 平方根法62.4 迭代法62.5 高斯消去法72.6 高斯列主元素消去法10第三章 NVIDIA CUDA并行计算平台123.1 GPU 技术简介123.2 CUDA介绍143.3 CUDA编程模型183.4 应用程序接口21编程语言扩展21第四章 功能实现和相关函数介绍234.1 程序在CPU上的实现23高斯列主元消

2、去算法实现过程23各文件中的主要功能函数介绍254.2 程序在GPU上的实现27文件中C语言的扩展27文件编写过程30并行性实现324.3性能比较与结果分析33第五章 总结与展望37致谢38参考文献39毕业设计说明书(论文)第一章 绪论1.1 引言当今很多科学与工程计算问题大都可以化为线性代数方程组的形式,所以有效的求解线性方程组在科学和工程计算中是非常重要的。虽然线性代数方程的求解方法和数值计算软件包均很成熟,但随着并行计算机的发展,问题的求解速度和解题规模都大大提高,因而使数值计算方法和响应的数学软件包都产生了变化,相应地线性方程组的有效并行求解也引起了人们的普遍关注。本文讨论使用并行算法

3、解线性方程组,介绍了并行计算理论,求解线性方程组的串行算法的实现以及并行化。本文算法用C语言描述,用VS2005环境进行编译,用高斯消去法求线性方程组的解并成功运行程序求解方程。1.2 论文研究背景在工程领域里,在进行系统分析和设计时,首先要建立系统的数学模型。求解线性方程组一直是解决许多数值计算问题的核心,因此对大规模线性方程组的求解在科学计算中显得非常重要。线性方程组求解是有限元结构分析的基础,求解线性方程组的方法有直接法和迭代法两种,直接法的优点是可以预先估计计算的工作量并且根据消去法的基本原理,可以得到有关矩阵运算的一些方法,它求解稳定,精度有保证,是有限元方程求解的主要方法。迭代法是

4、是用某种极限过程去逐步逼近线性方程组精确解的方法。对于那些要求快速计算的应用问题,单处理机由于器件受物理速度的限制而无法满足要求,所以使用多台处理机联合求解就势在必行了;其次,对于那些大型复杂的科学工程计算问题,为了提高计算精度,往往需要加密计算网格,而细网格的计算也意味着大计算量,它通常需要在并行机上实现;最后,对于那些实时性要求很高的应用问题,传统的串行处理往往难以满足实时性的需要而必须在并行机上用并行算法求解。在实现算法方面主要有串行和并行两种。串行算法在执行的过程中,对于数据的处理是串行的,也就是一次只能处理一个数据,显然效率比较低下,而并行算法则不存在这样的问题。所谓并行算法就是用多

5、台处理机联合求解问题的方法和步骤,其执行过程是将给定的问题首先分解成若干个尽量相互独立的子问题,然后使用多台计算机同时求解它,从而最终求得原问题的解。利用GPU强大的计算性能显著提高方程组的求解速度,弥补CPU的不足,把CPU从复杂计算中解放出来,毫无疑问GPU今后会继续往两个方面发展,一方面是具备更强大的性能和更高的运算能力;另一方面就是可编程性和通用性更强。不论是游戏视频还是各种应用程序,将会更多地借助到GPU的计算能力。1.3 论文研究的目的和意义对计算机系统超过当前可能提供的计算速度的需求总是不断增长。需要高计算速度的领域包括科学和工程问题的数值建模和模拟,这样的问题常需要对大量的数据

6、进行很多次重复计算以得到有效的结果。计算必须在“合理”的时间内完成。在设计环境中,如果进行一次模拟需要两个星期才能得到结果,这通常是不可接受的。因为只有模拟完成时间足够短时,设计者方可高效的工作。当系统变得更复杂时,就需要增加更多时间对系统进行模拟。有一些应用问题的计算对时间有特定的期限(最著名的要数气象预报),花两天的时间来获取当地第二天精确的天气预报将使得这种预报毫无意义。某些研究领域,如对大型DNA结构建模以及进行全球天气预报均具有巨大挑战性问题。所谓巨大挑战性的问题是指无法用当今计算机在结合里的时间内完成求解的那些问题。解决这些问题都要依靠多处理器的并行计算机,其处理器通常达到几百台。

7、它的优势主要体现在以下几个方面:1.它可以加快速度,即在更短的时间内解决相同的问题或在相同的时间内解决更多更复杂的问题,特别是对一些新出现的巨大挑战问题,不使用并行计算,有时根本无法解决的;2.节省投入,并行计算可以以较低的投入完成串行计算的任务;3.物理极限的约束,光速是不可逾越的速度极限,设备和材料也不可能做得无限小,只有通过并行才能够不断提高第38页 速度。本文的主要工作是从并行算法的实现出发,结合并行程序的设计特点,并行算法和并行应用程序进行了一些基本的研究与探索。1.4 论文结构安排论文将按照下面的描述进行内容的安排。第一章介绍本论文的研究背景及现实意义,以及论文的组织;第二章介绍了

8、求解线性方程组的基本理论:第三章主要针对NVIDIA CUDA并行计算平台进行分析并介绍了图形处理单元GPU的特点和工作模式,及相较于CPU的优点,并简单介绍了用CUDA环境实现在GPU上的并行处理的编程模型,描述了其使用的C扩展语言;第四章首先介绍了各个功能的实现和相关的主要函数,然后阐述了对于基于并行计算平台的功能的实现及与CPU平台的比较。结束语主要对论文进行总结,并对今后的研究设想做了展望。第二章 求解线性方程组的基本理论在自然科学和工程技术中很多问题的解决常常归结为解线性代数方程组,例如电学中的网络问题,船体数学放样中建立三次样条函数问题,用最小二乘法求实验数据的曲线拟合问题,解非线

9、性方程组问题,用差分法或者有限元方法解常微分方程、偏微分方程边值问题等都导致求解线性方程组,而这些方程组的系数矩阵大致分为两种,一种是低阶稠密矩阵(例如,阶数不超过150),另一种是大型稀疏矩阵(即矩阵阶数高且零元素较多)。关于线性方程组的数值解法一般有两类:直接法:就是经过有限步算术运算,可求得方程组精确解的方法(若计算过程中没有舍入误差)但实际计算中由于舍入误差的存在和影响,这种方法也只能求得线性方程组的近似解下面将阐述这类算法中最基本的高斯消去法及其某些变形这类方法是解低阶稠密矩阵方程组及其某些大型稀疏方程组(例如,大型带状方程组)的有效方法。迭代法:就是用某种极限过程去逐步逼近线性方程

10、组精确解的方法迭代法具有需要计算机的存贮单元较少、程序设计简单、原始系数矩阵在计算过程中始终不变等优点,但存在收敛性用收敛速度问题迭代法是解大型稀疏矩阵方程组的重要方法。2.1 高斯约当消去法高斯消去法始终是消去对角线下方的元素,现考虑高斯消去法的一种修正,即消去对角线下方和上方的元素,这种方法称为高斯约当(Gauss-Jordan)消去法。用高斯约当方法将矩阵约化为单位矩阵,计算解就在常数项位置得到,因此用不着回代求解,用高斯约当方法解方程组其计算量大约需要次乘除法,要经高斯消去法大,但用高斯约当方法求一个矩阵的逆矩阵还是比较合适的。2.2 矩阵三角分解法高斯消去法有很多变形,有的是高斯消去

11、法的改进、改写,有的是用于某一类特殊性质矩阵的高斯消去法的简化。2.2.1 直接三角分解法将高斯消去法改写为紧凑形式,可以直接从矩阵的元素得到计算,元素的递推公式,而不需任何中间步骤,这就是所谓直接三角分解法一旦实现了矩阵A的LU分解,那么求解的问题就等价于求解两个三角形方程组(1)Ly=b, 求y:(2)Ux=y, 求x。2.2.2 追赶法在一些实际总是中,例如解常微分方程边值问题,解热传导方程以及船体数学放样中建立三次样条函数等,都会要求解系数矩阵为对角占优的三对角线性方程组,而解三对角方程组的最简单方法是用追赶法,它公式简单,计算量小,所占用的存储单元少,所以在小机器上也能求解。追赶法是

12、用来求解三对角方程组的专用方法,对于三对角方程组,追赶法比Gauss消去法的计算量要小的多。应用追赶法求解三对角线性方程组。追赶法仍然保持LU分解特性,它是一种特殊的LU分解。充分利用了系数矩阵的特点,而且使之分解更简单,得到对三对角线性方程组的快速解法。设矩阵A非奇异,A有Crout分解A=LU,其中L为下三角矩阵,U为单位上三角矩阵,可先依次求出L,U中的元素后,令Ux=y,先求解下三角方程组Ly=f得出y,再求解上三角方程组Ux=y。事实上,求解三对角方程组的2追赶法将矩阵三角分解的计算与求解两个三角方程组的计算放在一起,使算法吏为紧凑。追赶发公式实际上就是把高斯消去法用到求解三对角线方

13、程组上的结果。这时由于A特别简单,因此使得求解的计算公式非常简单,而且计算量仅为5n-4次乘除法,而另外增加解一个方程组Ax=f2仅增加3n-2次乘除运算,易见追赶法的计算量是比较小的。2.3 平方根法应用有限元法解结构力学问题时,最后归结为求解线性方程组,系数矩阵大多具有对称正定性质系数矩阵为对称正定矩阵的方程组称为对称正定方程组,对称正定方程组可用高斯消去法、LU分解法求解,但可导出计算量更小的平方根法。利用对称正定矩阵的三角分解(乔累斯基分解)求解对称正定方程组的方法称为平方根法,这种方法已成为目前计算机上广泛应用的有效方法。2.4 迭代法迭代法的基本思想是构造一串收敛到解的序列,即建立

14、一种从已有近似解计算新的近似解的规则。由不同的计算规则得到不同的迭代法,本章介绍单步定常线性迭代法。直接法比较适用于中小型方程组。对高阶方程组,既使系数矩阵是稀疏的,但在运算中很难保持稀疏性,因而有存储量大,程序复杂等不足。 迭代法则能保持矩阵的稀疏性,具有计算简单,编制程序容易的优点,并在许多情况下收敛较快。故能有效地解一些高阶方程组。迭代法的基本思想是将线性方程组转化为便于迭代的等价方程组,对任选一组初始值 ,按某种计算规则,不断地对所得到的值进行修正,最终获得满足精度要求的方程组的近似解。迭代法的两种主要方法分别是雅可比迭代法和高斯塞德尔迭代法。雅可比迭代法的特点是公式简单,每迭代一次只

15、需计算一次矩阵和向量的乘法. 高斯塞德尔迭代法相比与雅可比迭代法收敛快(达到同样的精度所需迭代次数少)。下面重点介绍本课题所选用的高斯消去法和高斯列主元素消去法的基本原理。2.5 高斯消去法设有线性方程组 (2.1.1)或写为矩阵形式简记为Ax=b。用消去法解方程组的基本思想是用逐次消去未知数的方法把原方程组化为与其其的三角方程组而求解三角方程组可用回代的方法求解换句话说,上述过程就是用行的初等变换将原方程组系数矩阵化为简单形式(上三角矩阵),从而将求解原方程组(2.1.1)的问题转化为求解简单方程组的问题或者说,对系数矩阵施行一些左变换(用一些简单矩阵)将其约化为上三角矩阵。将(2.1.1)

16、记为其中(1)第步(k=1).设,首先计算乘数用乘(2.1.1)的第一个方程,加到第i个()方程上,消去(2.1.1)的从第二个方程到第m个方程中的未知数,得到与(2.1.1)等价的方程组 ()简记为,其中的元素计算公式为(2)第k次消元()设上述第1步,,第k-1步消元过程计算已经完成,即已计算好(2.1)等价的方程组 (2.2)简记为。设,计算乘数用乘(2.2)的第k个方程加到第i个方程,消去从第k+1个方程到第m个方程中的未知数,得到与(.)等价的方程组其中元素的计算公式为 (2.3)显然 中从第1行到第k行相同(3)继续上述过程,且设,直到完成第s步消元计算最后得到与原方程组等价的简单

17、方程组,其中为上梯形特别当m=n时,与原方程组等价的方程组为,即 (2.4)由(2.1)约化为(2.4)的过程称为消元过程。如果是非奇异矩阵,且,求解三角形方程组(2.1),得到求解公式 (2.5)(2.4)的求解过程(2.5)称为回代过程。注意:设,其中为非奇异矩阵,如果,由于为非奇异矩阵,所以的第一列一定有非零元素(不妨设),于是可交换两行元素(即),将调到(1,1)位置,然后进行消元计算,这时右下角矩阵为n-1阶非奇异矩阵,继续这过程,高斯消去法照样可进行计算。总结上述讨论即有设,其中那么(1)如果,则可通过高斯消去法将Ax=b约化为等价的三角方程组(2.4),且计算公式为:(a)消元计

18、算(k=1,2,n-1) (b)回代计算(2)如果为非奇异矩阵,则可通过高斯消去法(及交换两行的初等变换)将方程组约化为(2.4)。 2.6 高斯列主元素消去法由高斯消去法知道,在消元过程中可能出现0的情况,这时消去法将无法进行;即使主元素但很小时,用其作除数,会导致其他元素数量级的严重增长和舍入误差的扩散,最后也使得计算解不可靠。设方程组(2.1)的增广矩阵为首先在的第一列中选取绝对值最大的元素作为主元素例如,然后交换的第行和第行,经第1次消元计算得重复上述过程,设已完成k-1步的选主元素,交换两行及消元计算,约化为,其中的元素仍记为,的元素仍记为。第步选主元素(在右下角方阵的第列内选),即

19、确定,使交换的第k行和第行的元素,再进行消元计算,最后将原方程组化为回代求解得第三章 NVIDIA CUDA并行计算平台3.1 GPU 技术简介GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”。GPU是相对于CPU的一个概念,由于在现代的计算机中图形的处理变得越来越重要,需要一个专门的图形的核心处理器。NVIDIA公司在1999年发布GeForce 256图形处理芯片时首先提出GPU的概念。GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时。GPU所采用的核心技术有硬体T&L、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射

20、贴图、双重纹理四像素256位渲染引擎等,而硬体T&L技术可以说是GPU的标志。下图为GPU的图像处理机制。近年来,GPU正在以大大超过摩尔定律的速度高速发展,极大的提高了计算机图形处理的速度和质量,不但促进了图像处理、虚拟现实、计算机仿真等相关应用领域的快速发展,同时也为人们利用GPU进行图形处理以外的通用计算提供了良好的运行平台。目前GPU的浮点运算能力已经达到了接近370 GFLOPS,而CPU却只有32 GFLOPS,二者对比差别很大,另外,GPU有更大的内存带宽,目前已经达到了86.4GB/s,相当于CPU的10倍。如果能够充分利用这种计算能力和存取能力,那么GPU将能够更好地体现其价

21、值。图形处理器技术的迅速发展带来的并不只是速度的提高,还产生了很多全新的图形硬件技术,使GPU具有流处理、高密集并行运算、可编程流水线等特性,从而极大的拓展了GPU的处理能力和应用范围。正是由于GPU具有高效的并行性和灵活的可编程性等特点,越来越多的研究人员和商业组织开始利用GPU完成一些非图形绘制方面的计算,并开创了一个新的研究领域:基于GPU的通用计算(GPGPU,General-Purpose computation on GPU),其主要研究内容是如何利用GPU在图形处理之外的其他领域进行更为广泛的科学计算。目前已成功应用于运动规划、代数运算、优化计算、偏微分方程、数值求解、流体模拟、

22、数据库应用、频谱分析等非图形应用领域,甚至包括智能信息处理系统和数据挖掘工具等商业化应用。同时,也产生了一些针对GPU开发的通用计算工具包,能够基于GPU平台对FFT、BLAS、排序及线性方程组求解等科学计算进行优化实现。基于GPU的通用计算已成为近几年人们关注的一个研究热点。将GPU用于通用计算的主要目的是为了加速计算,加速的动力来自GPU在高性能计算方面所具有的优势:(1)高效的并行性。这一功能主要是通过GPU多条绘制流水线的并行计算来体现的。在目前主流的GPU中,配置多达16个片段处理流水线,6个顶点处理流水线。多条流水线可以在单一控制部件的集中控制下运行,也可以独立运行。GPU的顶点处

23、理流水线使用MIMD方式控制,片段处理流水线使用SIMD结构。相对于并行机而言,GPU提供的并行性在十分廉价的基础上,为很多适合于在GPU上进行处理的应用提供了一个很好的并行方案。(2)高密集的运算。GPU通常具有128位或256位的内存位宽,因此GPU在计算密集型应用方面具有很好的性能。(3)超长图形流水线。GPU超长图形流水线的设计以吞吐量的最大化为目标(如NVIDIA GeForce 3流水线有800个阶段),因此GPU作为数据流并行处理机,在对大规模的数据流并行处理方面具有明显的优势。CPU中的大部分晶体管主要用于构建控制电路(如分支预测等)和Cache,只有少部分的晶体管来完成实际的

24、运算工作。GPU与CPU的设计目标不同,其控制电路相对简单,而且对Cache的需求较小,所以大部分晶体管可以组成各类专用电路和多条流水线,使GPU的计算速度有了突破性的飞跃,拥有惊人的处理浮点运算的能力。正是由于GPU在并行处理和计算密集型问题求解等方面所具有的诸多优势,GPU已成为目前普通PC机所拥有的强大、高效的计算资源。从系统架构上看,GPU是针对向量计算进行了优化的高度并行的数据流处理机。这种以数据流作为处理单元的处理机,在对数据流的处理上可以获得很高的效率。根据NVIDIA公司开发的GPU工具包CUDA(Compute Unified Device Architecture)的测试结

25、果显示,利用GPU实现FFT、BLAS、排序及线性方程组求解等科学计算,与单纯依靠CPU实现的算法相比,平均性能提高了近20倍。由此可见,GPU的发展速度(包括集成度、计算密集型问题的处理能力等)已远远超过通用处理器,特别是随着可编程能力、并行处理能力和应用范围方面得到不断提升和扩展,使得GPU已成为当前计算机系统中具备高性能处理能力的部件。因此,充分利用现有计算资源,发挥GPU的高性能计算能力,在GPU与CPU的协作模式、GPU通用计算的计算模式以及性能优化等方面进行深入研究,将对进一步拓展目前高性能计算体系结构,为科学计算和工程应用提供新型的计算资源具有重要意义。3.2 CUDA介绍由于GPU浮点计算性能强劲,灵活性高,以GPU为计算平台的应用也越来越多,而不仅仅局限于计算机图形学。如Kruger2003将纹理作为矩阵的表示数据结构,在GPU中实现了一些线性代数的数值算法。而Bolz2003则利用GPU来进行稀疏矩阵的共轭梯度计算等。Govidaraju2004甚至利用GPU来进行数据库的海量操作计算。这方面最优秀的成果之一,是通用GPU语言的研究。典型的代表是Stanford 大学的Brook 项目和加拿大Waterl

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2