第六讲矩阵计算并行算法.pptVIP

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六讲矩阵计算并行算法

第六讲 矩阵计算并行算法 主要内容 并行算法基础知识 程序性能优化 程序性能优化 矩阵并行算法 主要内容 矩阵向量乘积 矩阵向量乘积 矩阵向量乘积 矩阵向量乘积 矩阵向量乘积示例 上机作业 主要内容 矩阵矩阵乘积 矩阵矩阵乘积 并行矩阵乘积 行列划分 行列划分 行列划分程序示例 行行划分 行行划分 列列划分 列列划分 列行划分 列行划分 Cannon 算法 Cannon 算法 Cannon 算法 Cannon 算法示例 Cannon 算法示例 Cannon 算法 Cannon 算法 Cannon 算法示例 上机作业 主要内容 线性方程组直接解法 线性方程组直接解法 矩阵 LU 分解 矩阵 LU 分解 矩阵 LU 分解 矩阵 LU 分解 上机作业 主要内容 三角方程并行求解 三角方程并行求解 三角方程并行求解 三角方程并行求解 三角方程并行求解 三角方程并行求解 上机作业 第二轮:计算 B10 B11 B12 B20 B21 B22 B00 B01 B02 A01 A01 A01 A12 A12 A12 A20 A20 A20 第三轮:计算 B20 B21 B22 B00 B01 B02 B10 B11 B12 A02 A02 A02 A10 A10 A10 A21 A21 A21 按行行划分并行计算矩阵乘积,其中 编写用第二种方式实现上述矩阵乘积的 Cannon 并行算法 并行算法基础知识 矩阵向量乘积的并行算法 矩阵矩阵乘积的并行算法 矩阵的 LU 分解并行算法 下三角线性方程组的并行算法 编写LU分解的并行程序,其中 并行算法基础知识 矩阵向量乘积的并行算法 矩阵矩阵乘积的并行算法 矩阵的 LU 分解并行算法 下三角线性方程组的并行算法 * * 并行算法基础知识 矩阵向量乘积的并行算法 矩阵矩阵乘积的并行算法 矩阵的 LU 分解并行算法 下三角线性方程组的并行算法 一些基本概念 加速比 其中 Ts 串行程序运行时间,Tp(q) 为 q 个进程的运行时间 并行效率 串行程序性能优化 —— 并行程序性能优化的基础 调用高性能库。如:BLAS、LAPACK、FFTW 选择编译器优化选项:-O2、-O3 合理定义数组维数 注意嵌套循环次数:数据访问的空间局部性和时间局部性 数据分块 循环展开 例: ex4performance.c 并行程序性能优化 设计好的并行算法和通信模式 减少通信次数、提高通信粒度 多进程通信时尽量使用高效率的聚合通信算法 负载平衡 通信与计算的重叠 减少进程的空闲时间 通过引入重复计算来减少通信 一些记号和假定 假设有 p 个处理器,每个处理器上运行一个进程 Pj 表示第 j 个处理器,Pmyid 表示当前的处理器 send(x; j) 表示在 Pmyid 中把数据块 x 发送给 Pj 进程 recv(x; j) 表示从 Pj 进程接收数据块 x i mod p 表示 i 对 p 取模运算 程序设计与机器实现是密不可分的,计算结果的好坏与编程技术有很大的关系,尤其是在并行计算机环境下,开发高质量的程序对发挥计算机的性能起着至关重要的作用 并行算法基础知识 矩阵向量乘积的并行算法 矩阵矩阵乘积的并行算法 矩阵的 LU 分解并行算法 下三角线性方程组的并行算法 串行算法 实现方法一:i-j 循环 for i=1 to m y(i)=0.0 for j=1 to n y(i)=y(i)+A(i,j)*x(j) end for end for 串行算法 实现方法二:j-i 循环 例:ex4matvec.f y=0 % 先赋初值 for j=1 to n for i=1 to m y(i)=y(i)+A(i,j)*x(j) end for end for 并行算法一 矩阵的划分方法:按行划分和按列划分 按行划分并行算法 将矩阵 A 按行划分成如下的行块子矩阵 将 Ai 存放在结点 Pi 中,每个结点计算 Ai x,最后调用 MPI_GATHER 或 MPI_GATHERV 即可 则 并行算法二 按列划分并行算法 将 Ai 和 xi 存放在结点 Pi 中,每个结点计算 Ai xiT,最后调用 MPI_REDUCE 或 MPI_ALLREDUCE 即可 将矩阵 A 按列划分,并对 x 也做相应的划分 其中 xi 的长度与 Ai 的列数相同,则有 例:按列划分,用 p 个进程并

文档评论(0)

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

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

1亿VIP精品文档

相关文档