[论文解读] A Class of Parallel Tiled Linear Algebra Algorithms for Multicore Architectures
本文提出了一类用于多核架构的分块、数据驱动的线性代数算法,通过细粒度任务并行和异步执行实现高性能。通过将Cholesky、LU和QR分解分解为在正方形数据块上操作的小型动态调度任务,该方法隐藏了顺序瓶颈,并在性能上比供应商优化的BLAS基础实现和传统的fork-join模型高出约50%。
As multicore systems continue to gain ground in the High Performance Computing world, linear algebra algorithms have to be reformulated or new algorithms have to be developed in order to take advantage of the architectural features on these new processors. Fine grain parallelism becomes a major requirement and introduces the necessity of loose synchronization in the parallel execution of an operation. This paper presents an algorithm for the Cholesky, LU and QR factorization where the operations can be represented as a sequence of small tasks that operate on square blocks of data. These tasks can be dynamically scheduled for execution based on the dependencies among them and on the availability of computational resources. This may result in an out of order execution of the tasks which will completely hide the presence of intrinsically sequential tasks in the factorization. Performance comparisons are presented with the LAPACK algorithms where parallelism can only be exploited at the level of the BLAS operations and vendor implementations.
研究动机与目标
- 解决传统LAPACK和ScaLAPACK库在多核架构上的可扩展性限制,其中并行性被限制在BLAS级别操作。
- 克服传统分块算法中粗粒度并行和同步开销导致的性能瓶颈。
- 设计能够利用细粒度并行和异步执行的算法,以改善多核系统上的数据局部性并隐藏内存延迟。
- 证明分块算法结合动态任务调度可超越标准LAPACK实现和如Intel MKL等优化的供应商库。
提出的方法
- 将密集线性代数分解(Cholesky、LU、QR)分解为一系列在数据正方形分块上操作的小型独立任务。
- 将计算建模为任务的有向无环图(DAG),其中显式表示依赖关系以指导动态调度。
- 使用运行时系统根据数据可用性和资源可用性异步调度任务,支持乱序执行。
- 采用合适的分块大小和内部阻塞大小,以在数据重用、负载均衡和BLAS效率之间取得平衡,从而最小化开销。
- 使用基于任务的编程模型实现算法,支持运行时根据硬件特性和工作负载分布自适应调整。
- 使用基于PLASMA的运行时系统评估性能,将分块算法与LAPACK分块算法和供应商优化的BLAS库进行比较。
实验结果
研究问题
- RQ1细粒度分块算法结合动态任务调度是否能在多核系统上超越传统的基于BLAS的fork-join并行?
- RQ2异步执行和乱序任务调度在多大程度上能够隐藏分解算法中固有顺序操作的延迟?
- RQ3分块大小和内部阻塞大小的选择如何影响分块线性代数核的性能和数值稳定性?
- RQ4分块算法是否能在较小问题规模下实现高于如Intel MKL等优化的供应商BLAS库的性能?
- RQ5在不同问题规模和核心数量下,分块算法的可扩展性特征如何?
主要发现
- 采用异步执行的分块算法相比使用多线程BLAS的LAPACK分块算法性能高出约50%,并优于同一操作的供应商优化实现。
- 在Cholesky分解中,分块方法显著优于LAPACK的左向查找变体,后者因低效的行交换导致性能低下。
- 使用分块方法的LU分解比LAPACK和MKL更快达到渐近性能,由于并行化开销减少,在较小问题规模下实现了显著加速。
- 分块算法与Intel MKL-9.1在LU分解上的性能差距主要源于低效的成对选主元和次优的内部阻塞大小,导致计算开销增加。
- 分块算法的浮乘操作数增加了1 + s/(2b)倍,但通过采用较小的内部阻塞大小s,可将此代价最小化,从而保持高效率。
- 弱可扩展性结果表明,随着核心数量的增加,分块算法保持了高性能,展示了有效的负载分配和资源利用率。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。