是否所有 BLAS 例程都以最小的错误计算各自的操作?
即减少的sdot计算误差最小吗?
我需要通过调用这些例程gsl/gsl_cblas.h。
是否所有 BLAS 例程都以最小的错误计算各自的操作?
即减少的sdot计算误差最小吗?
我需要通过调用这些例程gsl/gsl_cblas.h。
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 库可能会为计算结果提供错误界限。
两个专注于此的图书馆是: