在 C/C++ 中是否有 BLAS 的参考级实现?

计算科学 布拉斯 教育
2021-12-14 03:31:41

netlib BLAS 实现是一个很好的参考,大部分都没有优化和有据可查(例如zgemm)。但是,它在 Fortran 77 中,对于那些接受过更现代编程教育的人来说,它有些难以理解。在 C/C++ 中是否有 BLAS 的参考级实现,如 netlib?

4个回答

你看过GNU Scientific Library 的 实现吗?我发现源代码具有足够的可读性,并且例程有据可查。

BLAS 的一个值得注意的 C 语言实现是 ATLAS。在有用的功能中:

  1. 代数例程既可以作为简单的 C 语言实现,也可以作为用于多种架构和变体的高度优化的汇编器辅助版本实现。
  2. 构建系统具有一个“自动调谐器”,它编译 ATLAS 库的多个变体,以确定哪一个将是给定机器上最快的。

http://math-atlas.sourceforge.net/

Netlib 还生成CLAPACK,其中包括 BLAS,但它只是通过 f2c 运行的 fortran 代码,因此有点笨拙(例如zgemm)。

对于不仅是性能最高的高性能实现(优于英特尔至强融核 60 核峰值的 85%),而且也是最漂亮的编写,请查看 BLIS:

https://github.com/flame/blis