Yanıtlar:
Yöntem numpy.show_config()
(veya numpy.__config__.show()
), derleme sırasında toplanan bağlantı hakkında bilgi verir. Çıktım şuna benziyor. Sanırım bu, Mac OS ile birlikte gelen BLAS / LAPACK kullandığım anlamına geliyor.
>>> import numpy as np
>>> np.show_config()
lapack_opt_info:
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
extra_compile_args = ['-msse3']
define_macros = [('NO_ATLAS_INFO', 3)]
blas_opt_info:
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
define_macros = [('NO_ATLAS_INFO', 3)]
lapack_opt_info
gösterilen tek gerçek, uyuşukluğun lapack ile bağlantılı olduğu anlamına mı geliyor?
numpy.show_config()
altçizgilerin başlangıç olmaması nedeniyle muhtemelen genel bir API işlevi. Ancak çevrimiçi olarak belgelenmemiş ve belge dizgisi yok, bu yüzden bulmanın bu kadar zor olması şaşırtıcı değil. Umarım bunu düzeltirler.
Aradığınız şey şudur: sistem bilgisi
Uyuşuk / scipy'yi atlas ile derledim ve bunu şu şekilde kontrol edebilirim:
import numpy.distutils.system_info as sysinfo
sysinfo.get_info('atlas')
Daha fazla komut için belgelere bakın.
sysinfo.get_info('atlas')
benim için hiçbir şey geri döndü ama sysinfo.get_info('blas')
döndü {'include_dirs': ['/usr/local/include', '/usr/include', '/opt/local/include', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/include'], 'libraries': ['blas', 'blas'], 'library_dirs': ['/usr/lib']}
ve sysinfo.get_info('lapack')
dönen {'language': 'f77', 'libraries': ['lapack', 'lapack'], 'library_dirs': ['/usr/lib']}
Ne anlama geliyor?
Dinamik olarak yüklenen sürümleri kullandığından, bunu yapabilirsiniz:
$ ldd anyoftheCmodules.so
nerede anyoftheCmodules.so
olabilir, örneğin numpy/core/_dotblas.so
, hangi bağlantıya bağlanır libblas.so
.
numpy/core/_dotblas.so
? (talonmies cevap aşağıda yorumunu bakınız)
.so
dosya olmalı . NumPy dizini içinde arama yapın (diyelim, kullanarak find /path/to/numpy -name "*.so"
). (O bir çift _dotblas.so
, lapack_lite.so
örneğin Ubuntu'nun önceden derlenmiş birinin altında,) BLAS / LAPACK make kullanımı
_dotblas.so
artık numpy v1.10 ve daha yeni sürümlerde mevcut değil, ancak multiarray.so
bunun yerine bağlantısını kontrol edebilirsiniz
numpy.__config__
nesneye çalışma zamanında erişmek istiyorsunuz . ( Davost'un mükemmel cevabına bakın .)
Yapınızın C düzeyi kanca bileşenlerine bakmak için bağlantı yükleyici bağımlılık aracını kullanabilir ve bunların blas ve seçiminiz için harici bağımlılıkları olup olmadığını görebilirsiniz. Şu anda bir Linux kutusunun yakınında değilim, ancak bir OS X makinesinde bunu kurulumları tutan site paketleri dizini içinde yapabilirsiniz:
$ otool -L numpy/core/_dotblas.so
numpy/core/_dotblas.so:
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 268.0.1)
$ otool -L scipy/linalg/flapack.so
scipy/linalg/flapack.so (architecture i386):
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 242.0.0)
scipy/linalg/flapack.so (architecture ppc):
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
$ otool -L scipy/linalg/fblas.so
scipy/linalg/fblas.so (architecture i386):
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 242.0.0)
scipy/linalg/fblas.so (architecture ppc):
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
yerine ldd
yerine otool
bir gnu / Linux sisteminde ve ihtiyacınız olan yanıtları almalısınız.
numpy/core/_dotblas.so
? (Ricardos cevabının altındaki yoruma bakın)
_dotblas.so
, dağıtımı oluşturmak için kullanılan blas'ın arayüz sarmalayıcısı olacak. Windows'ta çağrılacaktır _dotblas.pyd
, ancak işlev aynıdır.
_dotblas.so
, yalnızca [atlas]
içinde bir bölüm site.cfg
(ve CBLAS etkin bir BLAS kitaplığı) kullanıyorsanız oluşturulmuş gibi görünüyor . Öyleyse, ATLAS kullanmasanız bile bunu kullanmalısınız (Intel MKL'yi kullanmanız dışında, özel bir bölümü vardır).
_dotblas.so
artık numpy v1.10 ve daha yeni sürümlerde mevcut değil, ancak multiarray.so
bunun yerine bağlantısını kontrol edebilirsiniz
BLAS, LAPACK, MKL bağlantısını aşağıdakileri kullanarak görüntüleyebilirsiniz show_config()
:
import numpy as np
np.show_config()
Benim için çıktı veren:
mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/my/environment/path/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/my/environment/path/include']
blas_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/my/environment/path/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/my/environment/path/include']
blas_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/my/environment/path/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/my/environment/path/include']
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/my/environment/path/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/my/environment/path/include']
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/my/environment/path/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/my/environment/path/include']
('HAVE_CBLAS', None)]
?
HAVE_CBLAS
tanımlandığı anlamına gelir, ancak değeri yoktur (düşünün C :) #define HAVE_CBLAS
. Sadece bayrak olarak kullanıldığından bir değere ihtiyaç duymaz. Olarak yorumlardım HAVE_CBLAS=True
. CBLAS'ınız olmasaydı, orada tuple hiç olmazdı.
Anaconda-navigator'ı kurduysanız (linux, Windows veya macOS için www.anaconda.com/anaconda/install/ adresinde) - blas, scipy ve numpy yüklenecek ve bunları gezginin ana sayfasının sol tarafındaki ortamlar sekmesine tıklayarak görebilirsiniz. sayfası (her dizini alfa sırasına göre arayın). Tam anaconda'yı kurmak (miniconda veya bireysel paketlerin aksine), veri bilimi için gereken temel paketlerin çoğunun kurulmasını sağlayacaktır.
numpy.__config__
gerçekten halka açık bir API olmalıdır. Yine de bu turu sen kazandın, Davost .