NPE*_*NPE 16 python performance multicore numpy linear-algebra
关于在numpy内部和外部矢量产品,矢量矩阵乘法等方面使用多核(在英特尔硬件上)的最新技术是什么?
numpy如果有必要,我很乐意重建,但此时我正在研究如何在不改变代码的情况下加快速度.
作为参考,我show_config()的如下,我从未观察numpy到使用多个核心:
atlas_threads_info:
libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/local/atlas-3.9.16/lib']
language = f77
include_dirs = ['/usr/local/atlas-3.9.16/include']
blas_opt_info:
libraries = ['ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/local/atlas-3.9.16/lib']
define_macros = [('ATLAS_INFO', '"\\"3.9.16\\""')]
language = c
include_dirs = ['/usr/local/atlas-3.9.16/include']
atlas_blas_threads_info:
libraries = ['ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/local/atlas-3.9.16/lib']
language = c
include_dirs = ['/usr/local/atlas-3.9.16/include']
lapack_opt_info:
libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/local/atlas-3.9.16/lib']
define_macros = [('ATLAS_INFO', '"\\"3.9.16\\""')]
language = f77
include_dirs = ['/usr/local/atlas-3.9.16/include']
lapack_mkl_info:
NOT AVAILABLE
blas_mkl_info:
NOT AVAILABLE
mkl_info:
NOT AVAILABLE
Run Code Online (Sandbox Code Playgroud)
您应该首先检查Numpy正在使用的Atlas构建是否已使用多线程构建.您可以构建并运行它来检查Atlas配置(直接来自Atlas FAQ):
main()
/*
* Compile, link and run with something like:
* gcc -o xprint_buildinfo -L[ATLAS lib dir] -latlas ; ./xprint_buildinfo
* if link fails, you are using ATLAS version older than 3.3.6.
*/
{
void ATL_buildinfo(void);
ATL_buildinfo();
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
如果您没有Atlas的多线程版本:"那就是您的问题".如果它是多线程的,那么你需要运行一个多线程BLAS3例程(可能是dgemm),使用一个适当大的矩阵矩阵产品,看看是否使用了线程.我认为我说得对,Atlas中的BLAS 2和BLAS 1例程都不支持多线程(并且有充分理由因为除了真正巨大的问题大小之外没有性能优势).
| 归档时间: |
|
| 查看次数: |
4620 次 |
| 最近记录: |