在多核处理器上实现线性代数例程:流水线与前瞻技术
1. 引言
数值线性代数算法在共享内存系统中的并行化标准方法,是依赖于基本线性代数子程序(BLAS)的并行实现,这在提取三级BLAS例程的并行性方面已被证明是有效的。然而,随着处理器或核心数量的增加,一级和二级例程的并行化不仅难以实现加速,甚至可能导致性能下降。这使得算法中一级和二级BLAS部分降低了并行化的优势,并限制了可达到的性能。因此,需要一种更灵活的方法来应对新一代多核处理器,这些处理器预计在不久的将来会拥有数十甚至数百个核心。
前瞻技术可以通过重叠执行效率较低和较高的操作来解决这个问题。同时,研究了不同级别的前瞻技术,并讨论了动态前瞻的概念,即算法的执行路径在运行时决定。
2. 矩阵分解
- LU分解 :对于一个$m×n$的实矩阵$A$,其带部分行主元的LU分解形式为$A = PLU$。其中,当$m >= n$时,$L$是一个$m×n$的实单位下三角矩阵,$U$是一个$n×n$的实上三角矩阵;当$m <= n$时,$L$是一个$n×n$的实单位下三角矩阵,$U$是一个$m×n$的实上三角矩阵,$P$是一个置换矩阵。在LAPACK中,双精度算法由DGETRF例程实现。算法的单步实现通过一系列对LAPACK和BLAS例程的调用:DGETF2、DLASWP、DTRSM、DGEMM,这是一种右视算法。
- Cholesky分解 :对于一个$n×n$的实对称正定矩阵$A$,其Cholesky分解形式为$A = LLT$,其中$L$是一个$n×n$的实下三角矩阵,且对角元素为正。块算法的形式与
超级会员免费看
订阅专栏 解锁全文
494

被折叠的 条评论
为什么被折叠?



