Re: LinearAlgebra incredibly slow for eigenvalue problems

2005-01-28 Thread David M. Cooke
drife [EMAIL PROTECTED] writes:

 Hello,

 I need to calculate the eigenvectors and eigenvalues for a 3600 X 3600
 covariance matrix.

 The LinearAlgebra package in Python is incredibly slow to perform the
 above calculations (about 1.5 hours). This in spite of the fact that
 I have installed Numeric with the full ATLAS and LAPACK libraries.

 Also note that my computer has dual Pentium IV (3.1 GHz) processors
 with 2Gb ram.

 Every Web discussion I have seen about such issues indicates that
 one can expect huge speed ups if one compiles and installs Numeric
 linked against the ATLAS and LAPACK libraries.

Are you *sure* that Numeric is linked against these?

 Even more perplexing is that the same calculation takes a mere 7 min
 in Matlab V6.5. Matlab uses both ATLAS and LAPACK.

 Moreover, the above calculation takes the same amount of time for
 Numeric to complete with --and-- without ATLAS and PACK. I am certain
 that I have done the install correctly.

This is good evidence that Numeric *isn't* linked to them.

If you're on a Linux system, you can check with ldd:
[EMAIL PROTECTED] ldd /usr/lib/python2.3/site-packages/Numeric/lapack_lite.so 
liblapack.so.3 = /usr/lib/atlas/liblapack.so.3 (0x002a95677000)
libblas.so.3 = /usr/lib/atlas/libblas.so.3 (0x002a95e55000)
libg2c.so.0 = /usr/lib/libg2c.so.0 (0x002a96721000)
libpthread.so.0 = /lib/libpthread.so.0 (0x002a96842000)
libc.so.6 = /lib/libc.so.6 (0x002a96957000)
libm.so.6 = /lib/libm.so.6 (0x002a96b96000)
/lib64/ld-linux-x86-64.so.2 = /lib64/ld-linux-x86-64.so.2 
(0x00552000)

You can see that lapack and blas (the Atlas versions) are linked to
the lapack_lite.so.

To install Numeric using Lapack:
- remove the build/ directory in your Numeric sources, so you don't
  any old binaries
- edit setup.py and follow the comments on using Lapack (you need to
  comment out a few lines, and set some directories)
  Also set use_dotblas to 1.
- do the 'python setup.py build', 'python setup.py install' dance.

-- 
||\/|
/--\
|David M. Cooke
|cookedm(at)physics(dot)mcmaster(dot)ca
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: LinearAlgebra incredibly slow for eigenvalue problems

2005-01-28 Thread John Hunter
 drife == drife  [EMAIL PROTECTED] writes:

drife Hi David, I performed the above check, and sure enough,
drife Numeric is --not-- linked to the ATLAS libraries.

drife I followed each of your steps outlined above, and Numeric
drife still is not linking to the ATLAS libraries.

drife My setup.py file is attached below.

Are you sure that you 

 1) 'rm -rf build'   before rebuilding

 2) are using the python / Numeric that you think you are, eg, might
you have one python in /usr/bin and another in /usr/local.  root
paths can differ from user paths which may effect which python is
used at install time versus run time

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: LinearAlgebra incredibly slow for eigenvalue problems

2005-01-28 Thread drife
Hi John,

I do have more than one version of Python laying around.

To do the build and install I am typing:

/d2/python/bin/python setup.by build  ! build.out
/d2/python/bin/python setup.by install  ! install.out
Should I be doing something different?

Daran

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: LinearAlgebra incredibly slow for eigenvalue problems

2005-01-28 Thread David M. Cooke
drife [EMAIL PROTECTED] writes:

 Hi David,

 I performed the above check, and sure enough, Numeric
 is --not-- linked to the ATLAS libraries.

 I followed each of your steps outlined above, and Numeric
 still is not linking to the ATLAS libraries.

 My setup.py file is attached below.

 # delete all but the first one in this list if using your own LAPACK/BLAS
 sourcelist = [os.path.join('Src', 'lapack_litemodule.c')]
 # set these to use your own BLAS;

 library_dirs_list = ['/d2/lib/atlas']
 libraries_list = ['lapack', 'ptcblas', 'ptf77blas', 'atlas', 'g2c']

 # set to true (1), if you also want BLAS optimized 
 matrixmultiply/dot/innerproduct
 use_dotblas = 1
 include_dirs = ['/d2/include']

This all look right (assuming you've got the right stuff in /d2).

When it compiles, does it look like it's actually doing the linking?
After doing python setup.py build, you can run ldd on the libraries in
the build directory (something like build/lib.linux-i386-2.3/lapack_lite.so).
If that's linked, then it's not being installed right.

You don't have a previous Numeric installation that's being picked up
instead of the one you're trying to install, do you?

At the interpreter prompt, check that
 import Numeric
 Numeric.__file__

gives you something you're expecting, and not something else.

-- 
||\/|
/--\
|David M. Cooke
|cookedm(at)physics(dot)mcmaster(dot)ca
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: LinearAlgebra incredibly slow for eigenvalue problems

2005-01-28 Thread drife
Hi David,

Yes, when Numeric compiles it does look like the linking is being
done properly. I captured the build to a file and see a few lines
similar to:


gcc -pthread -shared build/temp.linux-i686-2.4/Src/lapack_litemodule.o
-L/d2/lib/atlas -llapack -lptcblas -lptf77blas -latlas -lg2c -o
build/lib.linux-i686-2.4/lapack_lite.so

I checked the files in build/lib.linux-i686-2.4 and none have
dependencies on ATLAS.

When I run Python interpreter with:

 import Numeric
 Numeric.__file__

I get the answer I expect.
I am totall baffled.

Any other ideas?

Thanks for your help,

Daran

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: LinearAlgebra incredibly slow for eigenvalue problems

2005-01-28 Thread drife
David,

One more thing. I checked to see if the SciPy libraries had
dependencies on ATLAS. They do not, however, the eigenvector
calculation is still much faster than Numeric?
This is very strange.

Daran

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: LinearAlgebra incredibly slow for eigenvalue problems

2005-01-28 Thread drife
David,

I noticed that the libraries that ATLAS builds are not shared
objects (e.g., liblapack.a). Should these be shared objects?
I see nothing in the ATLAS documentation about building
things as shared objects.
Wondering if this is why the Numeric install is failing.


Daran

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: LinearAlgebra incredibly slow for eigenvalue problems

2005-01-28 Thread Robert Kern
drife wrote:
David,
I noticed that the libraries that ATLAS builds are not shared
objects (e.g., liblapack.a). Should these be shared objects?
I see nothing in the ATLAS documentation about building
things as shared objects.
Wondering if this is why the Numeric install is failing.
No, they should work just fine as static libraries.
--
Robert Kern
[EMAIL PROTECTED]
In the fields of hell where the grass grows high
 Are the graves of dreams allowed to die.
  -- Richard Harter
--
http://mail.python.org/mailman/listinfo/python-list