import numpy загружает разделяемые библиотеки blas в другие модули - PullRequest
4 голосов
/ 02 апреля 2012

У нас есть библиотека, связанная как модуль с помощью Cython (core.so).Он использует BLAS, но скомпилирован с опциями -undefined, динамический поиск в надежде, что BLAS будет загружен во время выполнения.

В дистрибутиве Enthought Python следующее решение отлично работает:

import numpy #This apparently loads the shared BLAS library
import core

Мы попробовали это на '' vanilla '' дистрибутиве Python в Ubuntu 10.04 с numpy, установленным через apt-get (и liblapack-dev, libblas-dev, установленным таким же образом).Не находит библиотеку BLAS.Как мы можем заставить его работать так же, как в EPD?

ОБНОВЛЕНИЕ :

Это сделано для того, чтобы получить тот же BLAS, что и в numpy.Например, на Mac OS X box EPD снова компилируется MKL и работает намного быстрее, чем доступный BLAS (Accelerate Framework).

Вывод numpy.show_config():

blas_info:
    libraries = ['blas']
    library_dirs = ['/usr/lib64']
    language = f77

lapack_info:
    libraries = ['lapack']
    library_dirs = ['/usr/lib64']
    language = f77

atlas_threads_info:
  NOT AVAILABLE

blas_opt_info:
    libraries = ['blas']
    library_dirs = ['/usr/lib64']
    language = f77
    define_macros = [('NO_ATLAS_INFO', 1)]

atlas_blas_threads_info:
  NOT AVAILABLE

lapack_opt_info:
    libraries = ['lapack', 'blas']
    library_dirs = ['/usr/lib64']
    language = f77
    define_macros = [('NO_ATLAS_INFO', 1)]

atlas_info:
  NOT AVAILABLE

lapack_mkl_info:
  NOT AVAILABLE

blas_mkl_info:
  NOT AVAILABLE

atlas_blas_info:
  NOT AVAILABLE

mkl_info:
  NOT AVAILABLE
...