উত্তর:
পদ্ধতিটি 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()
যা আন্ডারস্কোরগুলি শুরু না করার কারণে সম্ভবত একটি সর্বজনীন API ফাংশন। তবে এটি অনলাইনে নথিভুক্ত করা হয়নি এবং কোনও ডক্ট্রিং নেই, সুতরাং এটি খুঁজে পাওয়া এত কঠিন যে অবাক হওয়ার কিছু নেই। আশা করি তারা এটা ঠিক করে দেবেন।
আপনি যা অনুসন্ধান করছেন তা হ'ল: সিস্টেম তথ্য
আমি অ্যাটলাসের সাথে নপি / স্কিপি সংকলন করেছি এবং আমি এটি দিয়ে এটি পরীক্ষা করতে পারি:
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
পরিবর্তে এর সংযোগটি পরীক্ষা করতে পারেন
numpy.__config__
পরিবর্তে রানটাইম সময়ে কেবলমাত্র আধ্যাত্মিক বস্তুটি অ্যাক্সেস করতে চান । ( ডেভোস্টের দুর্দান্ত উত্তর দেখুন ))
আপনার বিল্ডের সি লেভেল হুক উপাদানগুলি দেখার জন্য আপনি লিংক লোডার নির্ভরতা সরঞ্জামটি ব্যবহার করতে পারেন এবং দেখতে পাচ্ছেন যে তাদের আপনার ব্লেসে এবং পছন্দমত ল্যাপের উপর বাহ্যিক নির্ভরতা রয়েছে কি না। আমি এখনই একটি লিনাক্স বাক্সের কাছে নেই, তবে কোনও ওএস এক্স মেশিনে আপনি সাইট-প্যাকেজ ডিরেক্টরিতে এটি স্থাপন করতে পারেন যা ইনস্টলেশনগুলি রাখে:
$ 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
, তবে ফাংশনটি একই is
_dotblas.so
হচ্ছে কেবল তখনই নির্মিত যদি আপনি (এবং একটি সিবিএলএএস-সক্ষম বিএলএএস লাইব্রেরি) কোনও [atlas]
বিভাগ ব্যবহার করছেন site.cfg
। সুতরাং, আপনার এটি ব্যবহার করা উচিত, এমনকি আপনি আটলাস ব্যবহার না করেও (আপনি যখন ইন্টেল এমকেএল ব্যবহার করছেন তখনই, এতে একটি ডেডিকেটেড বিভাগ রয়েছে)।
_dotblas.so
অদৃশ্য v1.10 এবং আরও নতুনতে আর বিদ্যমান নেই , তবে আপনি multiarray.so
পরিবর্তে এর সংযোগটি পরীক্ষা করতে পারেন
আপনি BLAS, ল্যাপ্যাক, এমকেএল লিঙ্কেজটি ব্যবহার করে প্রদর্শন করতে পারেন 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
। আপনার যদি সিবিএলএস না থাকে তবে আপনার এখানে টিপলটি মোটেই থাকত না।
যদি আপনি অ্যানাকোন্ডা-নেভিগেটর ইনস্টল করেন (লিনাক্স, উইন্ডোজ বা ম্যাকোসের জন্য www.anaconda.com/anaconda/install/ এ) - ব্লেস, স্কিপি এবং নম্পি সমস্ত ইনস্টল করা হবে এবং আপনি নেভিগেটরের বাড়ির বাম দিকে পরিবেশ ট্যাবে ক্লিক করে এগুলি দেখতে পাচ্ছেন them পৃষ্ঠা (আলফা ক্রমে প্রতিটি ডিরেক্টরি সন্ধান করুন)। পূর্ণ অ্যানাকোন্ডা ইনস্টল করা (মিনিকোন্ডা বা স্বতন্ত্র প্যাকেজগুলির বিপরীতে) ডেটা সায়েন্সের জন্য প্রয়োজনীয় অনেকগুলি প্রয়োজনীয় প্যাকেজ ইনস্টল করার যত্ন নেবে।
numpy.__config__
সত্যই একটি সর্বজনীন এপিআই হওয়া উচিত। তবুও, আপনি এই রাউন্ডটি জিতেছেন , ডিভস্ট ।