我已将MATLAB代码移植到

Python中,经过相当多的工作,我有一些可以工作的东西.不过,缺点是Python比MATLAB运行我的代码更慢.我明白,使用优化的ATLAS库将加快速度,但实际实现这一点让我感到困惑.这是怎么回事

我启动了没有安装BLAS的ipython会话:

import numpy.distutils.system_info as sysinfo

import time

In [11]: sysinfo.get_info('atlas')

Out[11]: {}

timeit( eig(randn(1E2,1E2)) )

100 loops, best of 3: 13.4 ms per loop

Matlab中的相同代码运行速度是两倍

tic,eig(randn(1E2));toc*1000

6.5650

我从Ubuntu存储库安装非优化的ATAS deb.重新启动ipython,现在我得到:

In [2]: sysinfo.get_info('atlas')

...

Out[2]:

{'define_macros': [('ATLAS_INFO', '"\\"3.8.4\\""')],

'include_dirs': ['/usr/include/atlas'],

'language': 'f77',

'libraries': ['lapack', 'f77blas', 'cblas', 'atlas'],

'library_dirs': ['/usr/lib/atlas-base/atlas', '/usr/lib/atlas-base']}

和测试代码:

In [4]: timeit( eig(randn(1E2,1E2)) )

100 loops, best of 3: 16.8 ms per loop

所以没有更快.如果任何一个触摸更慢.但是我还没有切换到优化的BLAS.我按照以下说明:http://danielnouri.org/notes/category/python/我构建库并用这些覆盖非优化版本.我重新启动了ipython,但没有改变:

In [4]: timeit( eig(randn(1E2,1E2)) )

100 loops, best of 3: 15.3 ms per loop

不能比这更好吗?在这个简单的例子中,MATLAB的速度仍然是两倍.在一个现实世界的例子中,我在傅立叶域中进行图像注册,Matlab相当于Python版本的4到5倍.有没有人设法让Numpy以MATLAB速度工作?

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐