Breeze 和 BLAS 在做两个向量的点积时有什么区别

What's the difference between Breeze and BLAS when doing dot product of two vectors

Breeze和BlAS都提供了API来计算两个向量的点积

对于 BLAS,它是:

BLAS.ddot(int n, double[] dx, int incx, double[] dy, int incy);

对于Breeze,是: DenseVector.dot

请问它们有什么区别?我应该选择使用哪一个?我这么问是因为我看Spark MLLib代码的时候,好像是spark选择了BLAS做向量计算。

通常,BLAS 库会使用您机器的较低级别功能,这些功能可以根据您的配置进行高度优化。 另一方面,Breeze 是作为 Scala 上线性代数运算的通用优化器构建的。

由于两者都有不同的实现(Breeze 的一大特点是使用纯矢量表示),您应该使用更适合您的用例的任何东西。