Eigen 的文档说可以使用任何 BLAS 后端(例如MKL)来执行实际的矩阵计算。
然而,在讨论卸载计算的标准时,它非常模糊(特别强调):
这样做时,许多 Eigen 算法被对 BLAS 或 LAPACK 例程的调用静默替换。这些替换仅适用于具有以下四种标准标量类型之一的动态或足够大的对象:float、double、complex 和 complex。其他标量类型或混合实数和复数的操作将继续使用内置算法。
所以我的问题是:
- 什么是被认为“足够大”的标准
- 是否因平台而异?
- 这是动态确定的吗?
- 可以由用户控制吗?
背景:我有小(25-50 平方)矩阵,但在我们使用的嵌入式平台(英特尔凌动 Silvermont)上是大的。由于这会消耗大量 CPU,因此我希望尝试 BLAS 后端,而无需大量重新编写代码。