正在加载图片...
附录A应用:矩阵乘积的快速算法 A.1矩阵乘积的普通方法 设A={al,B=[bl∈Rn×n,则C=[cl=AB,其中 c=) k=1 易知,总运算量为:n3(乘法)+n3(加法)=2n3 算法A1矩阵乘积:K顺序 1:for i=1 to n do 2 for j=1 to n do for k=1 to n do 5: end for 6: end for 7:end for 以上是计算矩阵乘积的常规实现方式,但并不是速度最快的实现方式.基于矩阵乘积在实际应用中 的重要性,人们在不断寻求计算矩阵乘积的快速方法.对于矩阵乘法的加速,有如下两种策略: ·基于算法的优化,如著名的Strassen算法 ·基于硬件的优化 A2基于硬件的加速方法 对于硬件优化,有循环展开、基于内存布局等的优化技巧.此外还可以多线程(比如C+I1有<thread> 库)并发执行.这里探讨一个最简单技巧:调换循环顺序.比如将原来的K顺序改成门顺序: 算法A2.矩阵乘积:K顺序 1:for i 1 to n do 2 for k 1 to n do 3: for j=1 to n do 4: cij =Cij+aikbkj 5: end for附录 A 应用: 矩阵乘积的快速算法 A.1 矩阵乘积的普通方法 设 A = [aij ], B = [bij ] ∈ R n×n, 则 C = [cij ] = AB, 其中 cij = ∑n k=1 aikbkj . 易知, 总运算量为: n 3(乘法)+ n 3(加法)= 2n 3 . 算法 A.1. 矩阵乘积: IJK 顺序 1: for i = 1 to n do 2: for j = 1 to n do 3: for k = 1 to n do 4: cij = cij + aikbkj 5: end for 6: end for 7: end for 以上是计算矩阵乘积的常规实现方式, 但并不是速度最快的实现方式. 基于矩阵乘积在实际应用中 的重要性, 人们在不断寻求计算矩阵乘积的快速方法. 对于矩阵乘法的加速, 有如下两种策略: • 基于算法的优化, 如著名的 Strassen 算法. • 基于硬件的优化 A.2 基于硬件的加速方法 对于硬件优化, 有循环展开、基于内存布局等的优化技巧. 此外还可以多线程 (比如C++11有<thread> 库) 并发执行. 这里探讨一个最简单技巧: 调换循环顺序. 比如将原来的 IJK 顺序改成 IKJ 顺序: 算法 A.2. 矩阵乘积: IKJ 顺序 1: for i = 1 to n do 2: for k = 1 to n do 3: for j = 1 to n do 4: cij = cij + aikbkj 5: end for 1
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有