首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在第1级例程中使用f2jBLAS而不是本地blas呢?

为什么在第1级例程中使用f2jBLAS而不是本地blas呢?
EN

Stack Overflow用户
提问于 2017-01-24 09:53:30
回答 1查看 646关注 0票数 3

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

代码语言:javascript
复制
// For level-1 routines, we use Java implementation.
private def f2jBLAS: NetlibBLAS = {
  if (_f2jBLAS == null) {
    _f2jBLAS = new F2jBLAS
  }
  _f2jBLAS
}

我认为本机blas比纯Java实现更快。

那么,为什么星火选择f2jblas的第1级例程,有什么理由我不知道?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-16 18:16:36

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

Java在老一代开发人员中享有声誉,因为Java应用程序在上世纪90年代发展缓慢。现在,JIT确保Java应用程序与-C/ C++ / Fortran应用程序的性能保持同步或超过其性能。

然后是图表,显示各种BLAS例程的详细基准测试结果,无论是纯Java (用f2j从Fortran翻译而来)还是来自Linux和macOS在x86_64上的原生BLAS。ddot基准测试表明,在x86 ( reference似乎没有JIT功能)上,F2J的性能与参考本机BLAS实现相同,用于更长的向量大小,甚至在较短的向量大小上优于它。这里要注意的是,JIT在几次调用之后才会启动,这不是一个问题,因为大多数ML算法本质上都是迭代的。大多数1级例程相当简单,JIT编译器能够生成经过良好优化的代码。这也是为什么高度优化的BLAS实现中的调优工作进入了第2级和第3级例程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41825022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档