On 10/08/2010 10:58 AM, Ian Goodfellow wrote:
Here's the output on my atlas library:
file -L /usr/local/atlas/lib/libatlas.so
/usr/local/atlas/lib/libatlas.so: ELF 64-bit LSB shared object,
x86-64, version 1 (SYSV), dynamically linked, not stripped
It looks mostly the same as yours except it says "not stripped" while
yours says "stripped." Do you know what that means?
Here's my timing code (but the difference between installations is
pretty obvious even without a timer, 8 full seconds on my machine
versus .2 seconds on a slower machine at work):
import numpy as N
import time
rng = N.random.RandomState([0,1,2])
A = rng.randn(1000,1000)
t1 = time.time(); x = N.dot(A,A); t2 = time.time()
print t2-t1
On Fri, Oct 8, 2010 at 11:49 AM, Bruce Southey <[email protected]
<mailto:[email protected]>> wrote:
On 10/08/2010 10:01 AM, Ian Goodfellow wrote:
I'm using 64-bit Ubuntu 10.04. I originally tried building
without site.cfg and got the same result. After that I removed
the installation and the numpy/build directory and tried again
with site.cfg.
Here's the otuput of my show_config(). Does this mean it's
actually using atlas? I ran 'make time' in the atlas directory
and got higher % of clock speed numbers than the reference so I
would be surprised if my atlas build is this slow.
atlas_threads_info:
libraries = ['lapack', 'lapack', 'f77blas', 'cblas', 'atlas']
library_dirs = ['/usr/local/atlas/lib']
define_macros = [('ATLAS_INFO', '"\\"None\\""')]
language = f77
include_dirs = ['/usr/include']
blas_opt_info:
libraries = ['lapack', 'f77blas', 'cblas', 'atlas']
library_dirs = ['/usr/local/atlas/lib']
define_macros = [('ATLAS_INFO', '"\\"None\\""')]
language = c
include_dirs = ['/usr/include']
atlas_blas_threads_info:
libraries = ['lapack', 'f77blas', 'cblas', 'atlas']
library_dirs = ['/usr/local/atlas/lib']
define_macros = [('ATLAS_INFO', '"\\"None\\""')]
language = c
include_dirs = ['/usr/include']
lapack_opt_info:
libraries = ['lapack', 'lapack', 'f77blas', 'cblas', 'atlas']
library_dirs = ['/usr/local/atlas/lib']
define_macros = [('ATLAS_INFO', '"\\"None\\""')]
language = f77
include_dirs = ['/usr/include']
lapack_mkl_info:
NOT AVAILABLE
blas_mkl_info:
NOT AVAILABLE
mkl_info:
NOT AVAILABLE
On Fri, Oct 8, 2010 at 10:53 AM, Bruce Southey
<[email protected] <mailto:[email protected]>> wrote:
On 10/08/2010 09:06 AM, Benjamin Root wrote:
On Fri, Oct 8, 2010 at 8:47 AM, Ian Goodfellow
<[email protected] <mailto:[email protected]>>
wrote:
Can anyone explain how to get numpy to recognize atlas?
I have atlas built and installed, and I put what I
thought should be sufficient, based on numpy's
INSTALL.TXT, to make numpy use atlas in my site.cfg then
ran python setup.py install. The resulting build is
incredibly slow. Multiplying a 1,000 x 1,000 matrix
takes 8 seconds. The default packages take .8 . On a
computer at work with a similar but slower cpu to mine,
it only takes .2, so I know I should be able to get a
lot more speed out of numpy.
This is my site.cfg:
[atlas]
atlas_libs = lapack, f77blas, cblas, atlas
[DEFAULT]
library_dirs = /usr/local/atlas/lib
include_dir = /usr/local/atlas/include
Thanks in advance,
Ian
Ian, it would be very helpful if you could post the output
from the build of numpy. That log can tell us whether it
found the libraries or not when building.
Ben Root
_______________________________________________
NumPy-Discussion mailing list
[email protected]
<mailto:[email protected]>
http://mail.scipy.org/mailman/listinfo/numpy-discussion
I do not use a 'site.cfg' even though I build my own numpy
but use the standard Fedora (13) packages for atlas. So try
it without defining it - remove the installation and build
directories first!
Can you please provide the operating system (including 32bit
or 64 bit), Python version and numpy version?
What is the output of the numpy function 'show_config()'?
I added mine below from a 64-bit linux system so you can see
that numpy is looking in the '/usr/lib64' directory.
Bruce
>>> import numpy as np
>>> np.show_config()
atlas_threads_info:
libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.3\\""')]
language = f77
include_dirs = ['/usr/include']
blas_opt_info:
libraries = ['ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.3\\""')]
language = c
include_dirs = ['/usr/include']
atlas_blas_threads_info:
libraries = ['ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.3\\""')]
language = c
include_dirs = ['/usr/include']
lapack_opt_info:
libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.3\\""')]
language = f77
include_dirs = ['/usr/include']
lapack_mkl_info:
NOT AVAILABLE
blas_mkl_info:
NOT AVAILABLE
mkl_info:
NOT AVAILABLE
>>>
_______________________________________________
NumPy-Discussion mailing list
[email protected] <mailto:[email protected]>
http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
[email protected] <mailto:[email protected]>
http://mail.scipy.org/mailman/listinfo/numpy-discussion
It appears to finding something but I do not know enough about
that aspect.
I presume that you installed your own version of atlas since you
are using /usr/local. So you need to be careful of the flags used
especially that it is 64-bit and uses the appropriate SSE
instructions for your processor. For example, on my system:
$ file -L /usr/lib64/atlas/libatlas.so
/usr/lib64/atlas/libatlas.so: ELF 64-bit LSB shared object,
x86-64, version 1 (SYSV), dynamically linked, stripped
Can you please provide the code you are using for timing for the
'slow' system?
By the way, there was this thread:
'HOWTO build NumPy without external math libs'
http://mail.scipy.org/pipermail/numpy-discussion/2010-July/051513.html
BLAS=None LAPACK=None ATLAS=None python setup.py build
Bruce
_______________________________________________
NumPy-Discussion mailing list
[email protected] <mailto:[email protected]>
http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion
Don't use time!
Use timeit.
I suspect your build is using numerical libraries that have not been
build correctly for your system. But I don't know anything about that.
What are the flags used to build lapack and atlas?
I told the lazy way of using timeit but may help you identify the slowness.
To capture the output I use two files for stdout and stderr:
$ python setup.py build > b.log 2>e.log
$ python setup.py install # done as root
1) Using numpy built as:
'BLAS=None LAPACK=None ATLAS=None python setup.py build'
$ python -m timeit -s "import numpy as N; rng =
N.random.RandomState([0,1,2]) ; A = rng.randn(1000,1000); x = N.dot(A,A)"
100000000 loops, best of 3: 0.012 usec per loop
2) Using numpy built just without Atlas:
'ATLAS=None python setup.py build'
$ python -m timeit -s "import numpy as N; rng =
N.random.RandomState([0,1,2]) ; A = rng.randn(1000,1000); x = N.dot(A,A)"
100000000 loops, best of 3: 0.012 usec per loop
3) Using Atlas without dot:
$ python -m timeit -s "import numpy as N; rng =
N.random.RandomState([0,1,2]) ; A = rng.randn(1000,1000)"
100000000 loops, best of 3: 0.012 usec per loop
4) Using Atlas with dot:
$ python -m timeit -s "import numpy as N; rng =
N.random.RandomState([0,1,2]) ; A = rng.randn(1000,1000); x = N.dot(A,A)"
100000000 loops, best of 3: 0.0131 usec per loop
Bruce
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion