hic*_*cup 13 python performance julia numba numba-pro
到目前为止我已经看过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使用llvmlite,它建立在LLVM v3.5上.Julia的旧LLVM是否会阻止在较新的体系结构上实现最佳的SIMD实施,例如Intel Haswell(AVX2指令)?
我对意大利面条代码和小DSP循环的性能比较感兴趣,以处理非常大的向量.由于将数据移入和移出GPU设备内存的开销,后者由CPU为我更有效地处理GPU.我只对单个Intel Core-i7 CPU的性能感兴趣,因此集群性能对我来说并不重要.我特别感兴趣的是创建DSP功能的并行化实现的轻松和成功.
这个问题的第二部分是Numba与NumbaPro的比较(忽略了MKL BLAS).target="parallel"鉴于Numba装饰师的新nogil论点,NumbaPro 真的需要@jit吗?
这是一个非常广泛的问题.关于基准测试请求,您最好根据自己的需要自行运行一些小基准测试.回答其中一个问题:
我注意到的一件事是Julia使用LLVM v3.3,而Numba使用llvmlite,它建立在LLVM v3.5上.Julia的旧LLVM是否会阻止在较新的体系结构上实现最佳的SIMD实施,例如Intel Haswell(AVX2指令)?
[ 2017/01+:以下信息不再适用于当前的Julia发布]
Julia确实用LLVM 3.3关闭了avx2,因为Haswell有一些深层次的错误.
Julia使用LLVM 3.3构建当前版本和nightlies,但是您可以使用3.5,3.6和通常svn trunk构建(如果我们在某一天尚未更新某些API更改,请提交问题).为此,请设置LLVM_VER=svn(例如)Make.user,然后继续按照构建说明进行操作.
| 归档时间: |
|
| 查看次数: |
3388 次 |
| 最近记录: |