并行计算实验指导书.docxVIP

  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文档。上传文档
查看更多
针对大型矩阵的并行计算 实验指导 一、实验目的 了解分布式系统的基本概念; 掌握并行编程的基本思想; 了解并行计算中的死锁和负载平衡等概念,并且通过实验加深理解。 二、实验要求 针对一个矩阵计算的并行算法,实现分布式的存储和大型矩阵的计算,实现矩阵的分 解和汇总,用统一的存储方式存储矩阵。可以在多种操作系统下实现,但是必须符合并行和分布式的要求。学习在整个并行计算中获取计算时间和传输时间的方法,并研究随着进程个数的增加,这两个参数的变化规律。语言和平台不限。 三、实验内容及方法 实验设计 设计矩阵的存储方式,可以选择现有的一些存储方法(下面有介绍) 设计矩阵分解方法,分配到每个进程所在的机子上的方案以及最后的汇总方式。 选择矩阵计算的一个并行算法,设计程序结构,通信实现方案以及最后的实验对比方案。 通信方式最常用的方式就是SOCKET 通信,当然也可以选择下面介绍的 MPI 函数库, 最少做两个矩阵的算法对比,主要比较计算时间和通信时间。 矩阵的处理 矩阵存储方法简介 A0 一般存储 用 n ? m 的数组来存放 n ? m 的矩阵,最普通容易理解的存储技术,保留所有数据信息,计算方便,不需要知道矩阵形态,但对于稀疏矩阵而言,这种存储方式空间利用率不高。 设矩阵 A ? Rn?m 按列存储在一维值数组E 中。首元素存于数组的第0 个位置。a ij 为矩阵 A 的第i 行第 j 列元素。则 a ? E[( j ?1)* n ? i ?1] ij A1 对称矩阵存储 对称矩阵的上三角与下三角数据对称,存储矩阵的上三角部分或下三角部分,仅保留一半数据。设矩阵 A ? Rn?n ,按列存储在一维数组E 中。首元素存于数组的第 0 个位 置。a ij 为矩阵 A 的第i 行第 j 列元素。则上(下)三角存储如式(4-2): ?E[ j *( j ?1) ? i ?1], (i ? j) ?E[(2* n ? j ? 2)*( j ?1) ? i ? j], (i ? j) ????a ? 2 a ??2 ? ? ? ? ij ? E[i *( i ?1) ? j ?1], (i ? j) ij ? E[(2* n ? i ? 2)*( i ?1) ? j ? i], (i ? j) ?? 2 ?? 2 A2 对角线存储法 对角线存储法按对角线进行存储,数组大小为n ? d ,其中n 为矩阵的阶数,d 为含有非零数据的对角线数量。此外,引入1? d 的整型数组,每个整数指明各个非零对角线所在的位置偏离主对角线的偏移量。对于具有d 条非零对角线的n ? n 的稀疏矩阵 A , 可以用两个数组进行表示:一个n ? d 维的值数组 E ,它每一列存储了一条对角线;一个 1? d 偏移数组 y ? [l ,l 1 2 , ,l d ],它存储了各对角线相对主对角线的偏移量。 ? 1 2 0 0 0 ? ? 0 0 1 2 ? ?? ?? ? ? ? 5 0 0 ? ? 0 3 4 5 ? ?? ? ? 例如: A ? ? 0 6 ? ? 8 0 7 0 0 ? ? E ? ? 0 ? ? 9 10 11? ? 8 6 7 0 ? ? 9 10 11? y ? ?3 ?1 0 1 ? 0 12 0 0 13? ?12 0 13 0 ? ? 矩阵的分解 ? ? ? 最简单的分解方式就是按块分解(包括行列划分),当然针对不同的矩阵算法,分解方法可能就不同,比较常见的分解方式有LU 分解,三角分解等,如果想了解这些算法, 可以查阅相关资料。如何将矩阵计算的任务比较均衡的分配到每个进程的问题以及最后的汇总方式,都要针对具体的矩阵算法进行具体的设计,下面结合矩阵乘法的并行算法介绍下: B0 选择一般存储法作为矩阵的存储方式 B1 矩阵按照行列划分,假设计算A*B,则 A 按照行划分,B 按照列划分,然后将划分的部分存储到对应的进程上(如下图) B2 矩阵的汇总 按照上面的划分和分配方式,最后每个进程计算的结果为结果矩阵按行划分的分解,所以只要汇总合并成一个矩阵就可以了。 程序架构设计 在具体实现矩阵并行乘法时,选择用MPI 来搭建机群和并行环境,程序框架如下: 可能用到的函数库 MPI 并行库 MPI 库是不能单独运行的,它可以和 fortran 或者 C/C++绑定使用。它可以提供可信的通信,所以编程者没有必要考虑通信的实现以及可靠性,只要设计通信方案就可以了。基本上所有的操作系统都有对应的MPI 版本,。 用 MPI+C/C++编程,编程模式比较固定,但是对各个进程的工作任务可以由编程者灵活的分配。MPI 给编者提供了一个默认的通信域(MPI_COMM_WORLD),在这个域里的每个进程都有个唯一的标志,并可以互相感知互

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档