BLAS 例程是否以最小的错误计算它们各自的操作?

计算科学 C 浮点 布拉斯
2021-11-26 22:23:24

是否所有 BLAS 例程都以最小的错误计算各自的操作?

即减少的sdot计算误差最小吗?

我需要通过调用这些例程gsl/gsl_cblas.h

2个回答

BLAS 例程通常不使用稳定的求和算法。对于 gsl,您可以在线查找其源代码 - gsl 的源代码sdot包含在 中gsl/cblas/source_dot_r.h,并且包含以下循环:

  for (i = 0; i < N; i++) {
    r += X[ix] * Y[iy];
    ix += incX;
    iy += incY;
  }

这只是一个简单的总和。BLAS 库本身的相应版本在这里,并且以基本相同的方式实现。

不幸的是,“标准”BLAS 实现不提供此功能。但是由于科学界希望通过 Exascale Computing 实现的目标,“可重现”的 BLAS 实施正在开发中。再现性与最小错误评估不同,但它是其中一个必要的部分。并且可重现的 BLAS 库可能会为计算结果提供错误界限。

两个专注于此的图书馆是: