【发布时间】:2011-08-24 20:05:51
【问题描述】:
我有一个 numpy 脚本,它在以下代码中花费了大约 50% 的运行时间:
s = numpy.dot(v1, v1)
在哪里
v1 = v[1:]
而v 是存储在连续内存中的float64 的4000 元素一维ndarray(v.strides 是(8,))。
有什么加快速度的建议吗?
edit 这是在 Intel 硬件上。这是我的numpy.show_config() 的输出:
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
【问题讨论】:
-
关心给出计时结果吗? FWIW,在我适度的机器点(.,.)中,形状随机向量(4000,)将需要大约 6us。谢谢
-
@eat:在我的机器上进行相同的操作需要不到 5us。我正在做很多这些,而且它们加起来。
-
嗯,单身
dot似乎是合理有效的。但是,如果您想向我们展示更多代码,也许有人可以找出如何优化计算。谢谢 -
@tillsten:是的,谢谢,它慢了好几倍(可能是因为它使用了一个临时数组。)
-
@OferHelman:这是很久以前(3.5 年)的事了,很抱歉我不太记得了。 :-( 但是,我确实记得我最终使用了英特尔 MKL。我不确定它是否对这个特定问题有任何作用。
标签: python performance numpy dot-product