from numpy import * import time A=random.random((1000,1000)) B=random.random((1000,1000)) st=time.time();dot(A,B);end=time.time();print end-st
以下代码在我的其他计算机上占用〜0.09秒(计算机的问题用于与其他计算机一样快速运行),但代码在计算机上占用了〜0.26的问题.
这是我试图解决这个问题.
我的第一个猜测是,
1:ATLAS没有连接到numpy.
所以,我使用突触,libatlas3-bas,libatlas-doc,libatlas-dev,libatlas3gf-bas,libatlas-bas-dev安装了图集包.
安装完成后,我检查了numpy是否通过键入链接到地图册
import numpy.distutils.system_info as sysinfo sysinfo.get_into('atlas')
返回消息如下:
ATLAS version 3.10.1 built by buildd on Sat Jul 27 19:04:50 UTC 2013: UNAME : Linux roseapple 3.2.0-37-generic #58-Ubuntu SMP Thu Jan 24 15:28:10 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux INSTFLG : -1 0 -a 1 -l 1 ARCHDEFS : -DATL_OS_Linux -DATL_ARCH_x86SSE2 -DATL_cpuMHZ=1596 -DATL_SSE2 -DATL_SSE1 -DATL_USE64BITS -DATL_GAS_x8664 F2CDEFS : -DAdd_ -DF77_INTEGER=int -DStringSunStyle CACHEEDGE: 1048576 F77 : /usr/bin/x86_64-linux-gnu-gfortran-4.8,version GNU Fortran (Ubuntu/Linaro 4.8.1-8ubuntu1) 4.8.1 F77FLAGS : -fomit-frame-pointer -mfpmath=sse -O2 -msse2 -fPIC -m64 SMC : /usr/bin/c99-gcc,version gcc (Ubuntu/Linaro 4.8.1-8ubuntu1) 4.8.1 SMCFLAGS : -fomit-frame-pointer -mfpmath=sse -O2 -msse2 -fPIC -m64 SKC : /usr/bin/c99-gcc,version gcc (Ubuntu/Linaro 4.8.1-8ubuntu1) 4.8.1 SkcfLAGS : -fomit-frame-pointer -mfpmath=sse -O2 -msse2 -fPIC -m64 Out[12]: {'define_macros': [('ATLAS_INFO','"\\"3.10.1\\""')],'include_dirs': ['/usr/include/atlas'],'language': 'f77','libraries': ['lapack','f77blas','cblas','atlas'],'library_dirs': ['/usr/lib/atlas-base/atlas','/usr/lib/atlas-base']}
所以,我认为它是联系在一起的.我也进入了numpy / core / path并键入
$ldd _dotblas.so
输出是
linux-vdso.so.1 => (0x00007fff16ffa000) libcblas.so.3 => /usr/lib/libcblas.so.3 (0x00007fa913908000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa9136eb000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa913322000) libatlas.so.3 => /usr/lib/libatlas.so.3 (0x00007fa912d8f000) libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007fa912a77000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa912860000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa91255c000) /lib64/ld-linux-x86-64.so.2 (0x00007fa913d4f000) libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007fa912320000)
然后,为了确保libcblas.so.3与ATLAS链接,我键入
$/usr/sbin/update-alternatives --config libblas.so.3 There are 4 choices for the alternative libblas.so.3 (providing /usr/lib/libblas.so.3). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/openblas-base/libopenblas.so.0 40 auto mode * 1 /usr/lib/atlas-base/atlas/libblas.so.3 35 manual mode 2 /usr/lib/libblas/libblas.so.3 10 manual mode 3 /usr/lib/openblas-base/libopenblas.so 30 manual mode 4 /usr/lib/openblas-base/libopenblas.so.0 40 manual mode Press enter to keep the current choice[*],or type selection number: 1
以下步骤没有解决我的问题…
>而且我意识到我的cpu节流已经开启了,当cpu节流开启时,ATLAS不能正常工作.所以,我把它关闭了使用rcconf,并重新安装了Atlas,如上所述,并重新安装了Numpy,但它并没有解决问题?
>现在我正在运行python 2.7.5,所以我尝试重新安装它..没有解决问题.
我检查了我的记忆..
total used free shared buffers cached
存储:5959 2345 3614 0 86 730
– / buffers / cache:1528 4431
互换:6133 0 6133
我的记忆是免费的..我的matlab代码运行得像以前一样快.所以我不认为这是内存问题..
有人可以帮忙吗?似乎numpy的线性代数包很慢…现在,它延迟了我的模拟很多,所以我不能真正运行我的代码.提前非常感谢!让我知道我的问题是否有任何混淆.
通过apt-get install python-numpy提供的Ubuntu(或Debian)打包版本的NumPy可以预先完成.另一方面,在NumPy源目录中使用pip install numpy或python setup.py安装NumPy,使用可用的编译器从源代码创建NumPy.
您可能更喜欢在自己的计算机上使用ATLAS编译NumPy. ATLAS将使用您的计算机的特性来优化numpy库(有效地要求关闭cpu限制).
apt-get install -y python-pip python-dev build-essential pip install -U cython apt-get install -y gcc gfortran libatlas-base-dev liblapack-dev pip install numpy
您可能希望阅读ATLAS installation guide或instructions to build NumPy and SciPy from source on Linux
这可能是你已经做了,但是别人可以找到它有用!