जवाबों:
विधि numpy.show_config()
(या numpy.__config__.show()
) बिल्ड टाइम पर एकत्र किए गए लिंकेज के बारे में जानकारी आउटपुट करती है। मेरा आउटपुट इस तरह दिखता है। मुझे लगता है कि इसका मतलब है कि मैं मैक ओएस के साथ बीएलएएस / लैपैक का उपयोग कर रहा हूं।
>>> 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
दिखाया गया है कि मात्र तथ्य का अर्थ है कि सुन्न को लैपैक के साथ जोड़ा जाता है?
numpy.show_config()
, जो अंडरस्कोर शुरू करने की अनुपस्थिति के कारण सार्वजनिक एपीआई कार्य है। लेकिन यह ऑनलाइन प्रलेखित नहीं है और इसमें कोई डॉकस्ट्रिंग नहीं है, इसलिए यह कोई आश्चर्य की बात नहीं है कि इसे ढूंढना इतना कठिन है। उम्मीद है कि वे इसे ठीक कर देंगे।
आप जो खोज रहे हैं वह यह है: सिस्टम जानकारी
मैंने एटलस के साथ सुन्न / डरावना संकलित किया और मैं इसके साथ जांच कर सकता हूं:
import numpy.distutils.system_info as sysinfo
sysinfo.get_info('atlas')
अधिक कमांड के लिए प्रलेखन की जाँच करें।
sysinfo.get_info('atlas')
ने मेरे लिए कुछ भी नहीं दिया लेकिन sysinfo.get_info('blas')
वापस लौट आया {'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']}
और sysinfo.get_info('lapack')
लौट आया {'language': 'f77', 'libraries': ['lapack', 'lapack'], 'library_dirs': ['/usr/lib']}
इसका क्या मतलब है?
जैसा कि यह गतिशील रूप से लोड किए गए संस्करणों का उपयोग करता है, आप बस ऐसा कर सकते हैं:
$ ldd anyoftheCmodules.so
जहां anyoftheCmodules.so
हो सकता है, उदाहरण के लिए, numpy/core/_dotblas.so
जो करने के लिए लिंक libblas.so
।
numpy/core/_dotblas.so
? (तलोनियों जवाब के नीचे टिप्पणी देखें)
.so
फ़ाइलों की एक संख्या होनी चाहिए । बस NumPy निर्देशिका के अंदर खोजें (कहते हैं, का उपयोग करते हुए find /path/to/numpy -name "*.so"
)। उन लोगों में से एक जोड़े ( _dotblas.so
, lapack_lite.so
उबंटू के precompiled एक के तहत, उदाहरण के लिए) BLAS / LAPACK के मेकअप उपयोग
_dotblas.so
अब खसरे v1.10 और नए में मौजूद नहीं है , लेकिन आप multiarray.so
इसके बजाय लिंकेज की जांच कर सकते हैं
आप अपने निर्माण के सी स्तर हुक घटकों को देखने के लिए लिंक लोडर निर्भरता उपकरण का उपयोग कर सकते हैं और यह देख सकते हैं कि क्या आपके ब्लास और पसंद के लैपैक पर उनकी बाहरी निर्भरता है। मैं अभी एक लिनक्स बॉक्स के पास नहीं हूं, लेकिन एक ओएस एक्स मशीन पर आप साइट-पैकेज निर्देशिका के अंदर ऐसा कर सकते हैं जो इंस्टॉलेशन रखती है:
$ 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)
एक ग्नू / लिनक्स प्रणाली के ldd
स्थान otool
पर स्थानापन्न करें और आपको उन उत्तरों को प्राप्त करना चाहिए जिनकी आपको आवश्यकता है।
numpy/core/_dotblas.so
? (रिचर्डस जवाब के नीचे टिप्पणी देखें)
_dotblas.so
जो वितरण को बनाने के लिए उपयोग किए जाने वाले ब्लास के लिए इंटरफ़ेस आवरण है। खिड़कियों पर इसे बुलाया जाएगा _dotblas.pyd
, लेकिन फ़ंक्शन समान है।
_dotblas.so
कि केवल तभी बनाया गया है जब आप (और CBLAS- सक्षम BLAS लाइब्रेरी [atlas]
में एक सेक्शन का उपयोग कर रहे हैं site.cfg
)। तो, आपको इसका उपयोग करना चाहिए, भले ही आप एटीएलएएस का उपयोग न कर रहे हों (सिवाय इसके कि आप इंटेल एमकेएल का उपयोग कर रहे हैं, जिसमें एक समर्पित अनुभाग है)।
_dotblas.so
अब खसरे v1.10 और नए में मौजूद नहीं है , लेकिन आप multiarray.so
इसके बजाय लिंकेज की जांच कर सकते हैं
आप का उपयोग कर BLAS, LAPACK, MKL लिंकेज प्रदर्शित कर सकते हैं show_config()
:
import numpy as np
np.show_config()
जो मेरे लिए आउटपुट देता है:
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
परिभाषित किया जा रहा है लेकिन इसका कोई मूल्य नहीं है (विचार सी #define HAVE_CBLAS
:)। इसे एक मूल्य की आवश्यकता नहीं है क्योंकि यह केवल ध्वज के रूप में उपयोग किया जाता है। मैं इसकी व्याख्या करूंगा HAVE_CBLAS=True
। यदि आपके पास CBLAS नहीं होता, तो आप वहां टपल नहीं बनाते।
यदि आपने एनाकोंडा-नाविक स्थापित किया है (linux, Windows या macOS के लिए www.anaconda.com/anaconda/install/ पर) - ब्लास, स्काईपी और सुपी सभी को स्थापित किया जाएगा और आप उन्हें नेविगेटर होम के बाईं ओर स्थित टैब पर क्लिक करके देख सकते हैं पृष्ठ (अल्फा क्रम में प्रत्येक निर्देशिका के लिए देखें)। फुल एनाकोंडा (मिनिकॉन्डा या इंडिविजुअल पैकेज के विपरीत) स्थापित करने से डेटा विज्ञान के लिए आवश्यक कई आवश्यक पैकेजों को स्थापित करने का ख्याल आएगा।
numpy.__config__
वास्तव में एक सार्वजनिक एपीआई होना चाहिए। बहरहाल, आप इस दौर को जीतते हैं , डेवोस्ट ।