[SciPy-dev] scipy distutils questions

Arnd Baecker arnd.baecker at web.de
Fri Dec 9 06:18:30 CST 2005


Hi,

yesterday I ran into a bunch of problems related to flapack/clapack
which I tried to work-around via distutils. Some of those attempts
did not work, so I would like to ask if I did something wrong here.
Apologies ahead if this is already mentioned in some
documtation - a pointer would be very much appreciated in that
case.

a) The Intel Math Kernel library provides LAPACK in both
   double (libmkl_lapack64.so) and single (libmkl_lapack32.so)
   precision.
   With the following in `site.cfg`

     [atlas]
     library_dirs = /opt/intel/mkl72/lib/64
     include_dirs = /opt/intel/mkl72/include/
     atlas_libs = mkl_lapack64,libmkl_lapack32,mkl

     [lapack]
     library_dirs = /opt/intel/mkl72/lib/64
     include_dirs = /opt/intel/mkl72/include/
     lapack_libs = mkl_lapack64,libmkl_lapack32

   it was not able to add them (without `libmkl_lapack32` the double
   precision one worked).
   Would that in principle be the correct way?

b) As this did not work, I changed in `Lib/linalg/setup.py`
  `skip_single_routines = True`
  This only had an effect (in the sense of rebuilding
  lapack/flapack/...) when  I touched the corresponding pyf files,
      touch *.pyf
  ((Is this mentioned somewhere in the docs?
    If so, I completely missed that))
   Is it also correct that
   removing the contents of the `linalg` directory in the `build`
   directory does not force a rebuild?

c) It seems that not all s* routines are listed in linalg/setup.py.
   I had to add the following in Lib/linalg/setup.py:
   skip_names['clapack'].extend(\
            'sgesv sgetrf sgetrs  cgesv cgetrf   cgetrs
             ...
   skip_names['flapack'].extend(\
            'sgesv sgebal sgbsv sgehrd  cgbsv  cgebal   cgehrd
             ...

   Would it possible to extract/exclude those automatically?

d) running the usual `python setup.py  .... install  --prefix=...`
   rebuilds the corresponding libraries (e.g _flapack.so).
   ((I always removed them before, but that might not be necessary))

   However, the resulting libararies were not moved to
   the destination, given by prefix.
   I had to copy them manually.
   Is this to be expected?

If all the above behaviour is really unavoidable
(eg. by more clever command line options etc.),
then I think the following would help a lot:
- ad: b) if setup.py is newer than the files which are generated,
  they should be rebuild.
- ad: c) it would be good, if changed files get copied
  over to the destination.

In addition: could you pleas add `sample_site.cfg` again
(or/and site.cfg, with everything commented out)

Because of all this (and previous problems concerning exchanging
fft libraries, presumably for similar reasons)
I presently completely remove the destination tree and the build
tree (sometimes I even do a full new checkout, if everything seems
screwed).

One more remark/question:
Usually scipy (core) will not require to add a site.cfg.
However for full scipy adding a site.cfg is often needed.
It seems that this file has to be placed into the
  site-packages/scipy/distutils/
directory or are there other places?
(For example couldn't it look in the directory from which
the `python setup.py install` command is issued?)

Best, Arnd




More information about the Scipy-dev mailing list