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

  • 2
  • 0
  • 约3.37千字
  • 约 51页
  • 2019-10-26 发布于浙江
  • 举报
第六讲 矩阵计算并行算法 主要内容 并行算法基础知识 程序性能优化 程序性能优化 矩阵并行算法 主要内容 矩阵向量乘积 矩阵向量乘积 矩阵向量乘积 矩阵向量乘积 矩阵向量乘积示例 上机作业 主要内容 矩阵矩阵乘积 矩阵矩阵乘积 并行矩阵乘积 行列划分 行列划分 行列划分程序示例 行行划分 行行划分 列列划分 列列划分 列行划分 列行划分 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)

1亿VIP精品文档

相关文档