BLAS 如何实现卓越性能
令人印象深刻的速度差异
自定义矩阵之间的比较乘法实现和 BLAS 揭示了显着的性能差异。 BLAS 利用高度优化的技术显着超越自定义实现。
BLAS 优化级别
BLAS 根据操作范围分为三个级别:
第 1 级:受益于向量化和 SIMD 功能的向量运算。
第 2 级:可以利用多处理器架构和共享内存的矩阵向量运算。
第 3 级: 矩阵-矩阵运算,对相对少量的数据执行大量运算。此级别采用缓存优化,显着增强性能。
实现和编译器影响
与普遍看法相反,大多数高性能 BLAS 实现不是用 Fortran 编写的。 ATLAS 和 OpenBLAS 等库使用 C 语言甚至汇编语言来构建性能关键组件。 Fortran 主要用于参考实现以及与 LAPACK 的接口。
为什么自定义实现无法实现
自定义实现通常缺乏 BLAS 使用的复杂优化技术。具体来说,他们经常无法利用缓存优化,而缓存优化对 BLAS 的卓越性能有很大贡献。
创新的 BLIS 论文
突破性的 BLIS 强调了该领域的最新进展文件。这些论文深入探讨了 BLAS 优化的复杂性,并提出了矩阵-矩阵乘积的简明实现。利用内在函数和汇编代码的变体进一步提高了性能。
以上是为什么 BLAS 比自定义矩阵乘法实现快得多?的详细内容。更多信息请关注PHP中文网其他相关文章!