【发布时间】:2015-06-15 10:15:03
【问题描述】:
到目前为止我看到的 Julia 的性能基准,例如在 http://julialang.org/,将 Julia 与纯 Python 或 Python+NumPy 进行比较。与 NumPy 不同,SciPy 使用 BLAS 和 LAPACK 库,我们可以在其中获得最佳的多线程 SIMD 实现。如果我们假设 Julia 和 Python 在调用 BLAS 和 LAPACK 函数时的性能相同(在底层),那么在使用 Numba 或 NumbaPro 处理不调用 BLAS 或 LAPACK 函数的代码时,Julia 的性能与 CPython 相比如何?
我注意到的一件事是 Julia 使用的是 LLVM v3.3,而 Numba 使用的是基于 LLVM v3.5 构建的 llvmlite。 Julia 的旧 LLVM 是否会阻止在 Intel Haswell(AVX2 指令)等较新架构上实现最佳 SIMD?
我对意大利面条代码和处理非常大向量的小型 DSP 循环的性能比较感兴趣。由于将数据移入和移出 GPU 设备内存的开销,对我而言,后者由 CPU 比 GPU 更有效地处理。我只对单个 Intel Core-i7 CPU 的性能感兴趣,因此集群性能对我来说并不重要。我特别感兴趣的是创建 DSP 函数的并行实现的简单性和成功性。
这个问题的第二部分是 Numba 与 NumbaPro 的比较(忽略 MKL BLAS)。考虑到 Numba 中 @jit 装饰器的新 nogil 参数,真的需要 NumbaPro 的 target="parallel" 吗?
【问题讨论】:
-
@user3666197 煽动响应者并支持关于 SO 响应者的阴谋论不会引起对您的事业的同情。您的回答冗长且难以理解。您随后的 cmets 侮辱了 Julia 用户对 SO 的善意,他们自愿花时间回答问题。如果您对 Julia 性能时间与 Python/Numba 有建设性的批评,请考虑在 SO 或 Julia 用户列表上发布一个单独的问题。打嗝的这个问题不是合适的途径。
-
尊敬的 Kevin L. Keys,感谢您对已删除评论的回复,事实#1 删除帖子的做法称为审查,无论执行该类的动机如何的权力。 事实#2 LuaJIT 讨论中记录的不公平计时做法的引用是引用,而不是意见,越少侮辱。 Fact#3 建设性提案自答复的第一篇文章以来提出,作为可重复的 MCVE,允许运行 连贯-实验,而后来的 cmets 带来了但不连贯的测试因素(+来自记录的主要 Lua 事件的新光)。
-
科学批判性思维的美丽和力量在于它能够重复测试以确认或使理论、模型或测试无效。如果打嗝询问了 numba-LLVM/JIT 编译的性能,并且发表的声明说 GIL 步进的解释代码运行速度慢了 22 倍,那么下面提出的实验测试了相干实验的速度预期区域(应该在一边运行和更新语言维护者+使用更正的公平计时方法)。 已向教授发送了这方面的研究建议。 Sanders(现在,MIT Julia Lab)完全可行。
-
最后但并非最不重要的一点是,鉴于您的论点力求保护 (cit.:)“...... Julia 用户在 SO 上自愿花时间回答问题的善意”,让我请求您同样尊重我自愿回答 @hiccup 的问题和善意传达核心优点的同时被曝光重复审查和破坏性的投票歇斯底里。如果有人认为下面的答案难以理解和/或冗长,它会努力在可重复的 MCVE 实验中引用事实,以让那些可以+想要重新运行它的人获得结果。
-
鉴于之前几个关于缓存层次结构对测试的影响的 cmets 已被删除,并且希望审查员不会删除指向类似动机的 Jean-François Puget (IBM France) 的彻底实验的链接重新测试 Sebastian F. Walter 的测试,但是在实际大小的矩阵上(不同的缓存策略确实显示出它们的优势)>>> ibm.com/developerworks/community/blogs/jfp/entry/… 其中 SciPy+LAPACK 在上述矩阵大小上显示出它们显着的优势1000x1000。
标签: python performance julia numba numba-pro