2015-11-23 6 views
7

उदाहरण के लिए मेरे पास Atlas, OpenBlas, MKL एक ही समय में मेरे उबंटू 14.04 पर स्थापित हो सकता है और Caffe को पुन: संकलित किए बिना उनके बीच स्विच कर सकता है?क्या प्रोग्राम को पुन: सम्मिलित किए बिना बीएलएएस पुस्तकालयों के बीच स्विच करना संभव है?

+2

@Shai कैफे के साथ विभिन्न BLAS libs बेंचमार्क करने के लिए। – mrgloom

+0

यह एक दिलचस्प काम है। यदि आप किसी भी निष्कर्ष तक पहुंचते हैं तो यह अच्छा होगा अगर आप उन्हें यहां साझा करते हैं। – Shai

उत्तर

6

ज़रूर, आप उन्हें स्थापित किया है करने के लिए है, और Ubuntu/डेबियन मुद्दा आदेश पर

update-alternatives --config libblas.so.3 

आप विकल्प की सूची गिने प्राप्त करेंगे और आसानी से

लिंक उनके बीच स्विच कर सकते हैं: https://wiki.debian.org/DebianScience/LinearAlgebraLibraries

+0

एक और सवाल क्या होगा यदि मैं सामान्य तरीके से ओपनब्लैस का निर्माण करता हूं और ध्वज के साथ USE_OPENMP = 1? क्या मैं उनके बीच स्विच कर सकता हूं? यानी मैं लाइब्रेरी संशोधनों/संस्करणों के बीच स्विच कर सकता हूं? – mrgloom

+0

@mrgloom हाँ, लेकिन वे एक ही विकल्प प्रदान करते हुए, अलग-अलग पैकेज होना चाहिए। फिर 'अपडेट-विकल्प' उनके बारे में जानेंगे –

+0

लेकिन मैं उन्हें कई पैकेज के रूप में कैसे बना सकता हूं?उदाहरण के लिए यदि मैं 'make' के माध्यम से स्रोत से OpenBlas का निर्माण करता हूं और फिर' PREFIX = your_installation_directory1' इंस्टॉल करता हूं और फिर मैं 'USE_OPENMP = 1'' बना देता हूं और 'PREFIX = your_installation_directory2' इंस्टॉल करता हूं, तो' अपडेट-विकल्प 'मेरे बिल्ड ढूंढ सकता है इस फ़ोल्डरों में या मैं 'इंस्टॉल इंस्टॉल' के माध्यम से उबंटू की डिफ़ॉल्ट lib निर्देशिका में एक ही lib के दो अलग-अलग निर्माण कैसे स्थापित कर सकता हूं? – mrgloom

5

हाँ, आप कर सकते हैं। आपको बस डायनामिक लाइब्रेरी लिंकिंग का उपयोग करने की आवश्यकता है। libblas.so.3/etc/alternatives/libblas.so.3 करने के लिए एक नरम जोड़ने कौन सा BLAS पुस्तकालय कार्यान्वयन

उदाहरण के लिए करने के लिए बारी अंक में अगर आप Atlas (sudo apt-get install libatlas3-base) को स्थापित करने से है:

/usr/lib/libblas.so.3 -> /etc/alternatives/libblas.so.3 
/etc/alternatives/libblas.so.3 -> /usr/lib/atlas-base/atlas/libblas.so.3 

जबकि Openblas (sudo apt-get install libopenblas-base) स्थापित करने के बाद:

/usr/lib/libblas.so.3 -> /etc/alternatives/libblas.so.3 
/etc/alternatives/libblas.so.3 -> /usr/lib/openblas-base/libblas.so.3 

बेशक आप अपने स्वयं के मुलायम लिंक का उपयोग कर सकते हैं लाइब्रेरी बनाता है।

+0

'ldconfig -p' मुझे' libblas.so.3gf (libc6, x86-64) =>/usr/lib/libblas.so.3gf' और \t 'libblas.so (libc6, x86-64) =>/usr/lib/libblas.so' 'libblas.so.3' क्या है आप इस पर विस्तार कर सकते हैं? – mrgloom

+0

@mrgloom क्या आप सूचीबद्ध कर सकते हैं कि कौन से ब्लैस पैकेज स्थापित हैं? – ztik

5

आप सिस्टम विस्तृत सेटिंग्स को बदलने के बिना भी ऐसा कर सकते हैं, उदाहरण के लिए लाइब्रेरी को जोड़कर आप LD_PRELOAD या LD_LIBRARY_PATH पर्यावरण चर में उपयोग करना चाहते हैं। इस पथ पर पहली लाइब्रेरी का प्रयोग प्रतीकों को हल करने के लिए किया जाएगा।

उदाहरण के लिए, आप

LD_PRELOAD=/path/to/blas/lib.so ./my_executable_using_caffe 

साथ चला सकते हैं आप देख सकते हैं कि इस दृष्टिकोण अलग कार्यान्वयन के लिए एक बेंच मार्किंग स्क्रिप्ट के हिस्से के रूप अत्यंत उपयोगी होगी क्योंकि यह बेंच मार्किंग वातावरण ही प्रभावित नहीं करता। उदाहरण (बैश में) के लिए:

my_libraries=/path/to/blas1.so /path/to/blas2.so 

for lib in $my_libraries 
do 
    LD_PRELOAD=${lib} ./my_executable_using_caffe 
done 

यह दृष्टिकोण, गतिशील जोड़ने के आधार पर, किसी भी अन्य साझा लाइब्रेरी अपने कार्यक्रम के खिलाफ संकलित किया गया है करने के लिए लागू होता है।

संबंधित मुद्दे

 संबंधित मुद्दे