gpt4 book ai didi

scala - 为什么 spark blas 在 1 级例程中使用 f2jBLAS 而不是原生 BLAS?

转载 作者:行者123 更新时间:2023-12-01 23:11:10 26 4
gpt4 key购买 nike

我在 BLAS.scala 中找到了以下代码:

// For level-1 routines, we use Java implementation.
private def f2jBLAS: NetlibBLAS = {
if (_f2jBLAS == null) {
_f2jBLAS = new F2jBLAS
}
_f2jBLAS
}

我认为原生 blas 比纯 Java 实现更快。

那么spark为什么选择f2jblas作为level 1例程,有什么我不知道的原因吗?

谢谢!

最佳答案

答案最有可能在 netlib-java 的自述文件的性能 部分找到。存储库。

Java has a reputation with older generation developers because Java applications were slow in the 1990s. Nowadays, the JIT ensures that Java applications keep pace with – or exceed the performance of – C / C++ / Fortran applications.

接下来的图表显示了各种 BLAS 例程的详细基准测试结果,包括纯 Java(从带有 f2j 的 Fortran 翻译而来)和 ARM 上的 Linux 和 x86_64 上的 macOS 上的原生 BLAS。 ddot 基准测试表明,在 x86 上(ARM 的 JRE 似乎没有 JIT 功能)F2J 对于较长的向量大小与引用 native BLAS 实现的性能相当,甚至在较短的向量大小方面优于它。这里需要注意的是,JIT 在几次调用后启动,这不是问题,因为大多数 ML 算法本质上都是迭代的。大多数 1 级例程都相当简单,并且 JIT 编译器能够生成优化良好的代码。这也是高度优化的 BLAS 实现中的调优工作进入第 2 级和第 3 级例程的原因。

关于scala - 为什么 spark blas 在 1 级例程中使用 f2jBLAS 而不是原生 BLAS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41825022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com