课程论文_LU分解的OpenMP实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《并行算法实践》要求学生在KD60实验平台上设计并行算法并实现。实验平台由一块处理板、一块监控板和一块背板等组成。 处理板逻辑结构如图1所示。处理板承载4个处理单元,每个处理单元包括一个龙芯3号四核CPU、2GB DDR2内存、RTL8110千兆以太网卡芯片、BIOS Flash、串口收发芯片以及电源变换电路等。四个龙芯3号处理器通过HT总线实现互连。监控电路检测4个处理单元的状态,并实现对其控制。 图1 处理板逻辑结构 实验平台的系统软件以开源软件为主(见图2),具有兼容性强、易维护、易升级、易使用等特点。处理单元操作系统为Debian GNU/Linux无盘系统,采用稳定高效的2.6.27内核。 图2 软件系统结构 要求选修《并行算法实践》同学在下面表1中选一个题目,(1)阐述基本原理(包括对算法改进和优化方法);(2)根据KD60实验平台设计实验方法和步骤(包括主要调试过程要求拷屏)。(3) 数据及结果分析:根据不同的实验内容,记录具体的实验数据或程序运行结果(要求拷屏)。实验数据量较大时,最好制成表格形式。附上程序功能、模块说明、完整源代码,源代码中尽量多带注释;(4)分析和总结:对程序与算法性能改进结论,总结和体会。 表1 《并行算法实践》题目 序号 题目名称 基本方法和内容要求 1 LU分解的Open MP实现 编写LU分解的Open MP程序 2 KMP算法的Open MP实现 编写KMP算法的OpenMP程序 3 高斯消元法解线性方程组的Open MP实现 编写高斯消元法解线性方程组的OpenMP程序 4 高斯消元法解线性方程组的MPI实现 编写高斯消元法解线性方程组的MPI程序 5 高斯-塞德尔迭代解线性方程组的MPI实现 编写高斯-塞德尔迭代解线性方程组的MPI程序 6 Cannon乘法的MPI实现 编写Cannon乘法的MPI程序 7 LU分解的MPI实现 编写LU分解的MPI程序 8 随机串匹配算法的MPI实现 编写随机串匹配算法的MPI程序 9 单源最短路径Dijkstra 算法的MPI实现 编写单源最短路径Dijkstra算法的MPI程序 10 快速排序算法的MPI实现 编写快速排序算法的MPI程序 11 KMP串匹配的MPI实现 编写KMP串匹配算法的MPI程序 实验课程名称:并行算法实践 实验项目名称:LU分解的Open MP实现 实验目的:理解多核程序的设计思想,学习使用OpenMP编写并行程序。 必修或选修:选修 实验平台: 硬件平台:龙芯3A教学仪器 软件平台:Debian GNU/Linux 2.6.27无盘系统,GCC 4.3编译环境 实验原理:(阐述基本原理,也包括对算法改进和优化方法) 对于一个n阶非奇异方阵A=[aij],对A进行LU分解是求一个主对角元素全为1的下三角方阵L=[lij]与上三角方阵U=[uij],使A=LU。 例如对于一个3×3的矩阵,就有 设A的各阶主子行列式皆非零,U和L的元素可由下面的递推式求出: aij(1)=aij aij(k+1)=aij(k)-likukj 在计算过程中,首先计算出U的第一行元素,然后算出L的第一列元素,修改相应A的元素;再算出U的第二行,L的第二列…,直至算出unn为止。若一次乘法和加法运算或一次除法运算时间为一个单位时间,则下述LU分解的串行算法时间复杂度为= O(n3)。 单处理器上矩阵LU分解串行算法 输入:矩阵An×n 输出:下三角矩阵Ln×n,上三角矩阵 Un×n Begin (1)for k=1 to n do (1.1)for i=k+1 to n do a[i,k]=a[i,k]/a[k,k] end for (1.2)for i=k+1 to n do for j=k+1 to n do a[i,j]=a[i,j]-a[i,k]*a[k,j] end for end for end for (2)for i=1 to n do (2.1)for j=1 to n do if (ji) then l[i,j]=a[i,j] else u[i,j]=a[i,j] end if end for (2.2)l[i,i]=1 end for End LU分解的OpenMP并行算法主要是用pragma omp for制导语句对非数据相关且非操作相关的for循环语句并行化。 多核处理器上矩阵LU分解OpenMP并行算法 Begin #pragma omp parallel shared(A) private(tid,i,j,k) { (1)for k=1 to n do #pragma omp for { (1.1)for i=k+1 to n do a[i,k]=a[i,k]/a[

文档评论(0)

***** + 关注
实名认证
文档贡献者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档