मेरे विश्वविद्यालय में कंप्यूटर क्लस्टर का उपयोग करते समय मुझे मैट्रिक्स त्रुटि हो रही है कि मैं अपनी स्थानीय मशीन पर पुन: उत्पन्न नहीं कर सकता। मुझे लगता है कि यह मैट्रिक्स पुस्तकालयों (बीएलएएस, लैपैक, एटलस इत्यादि) के अंतर के कारण हो सकता है। मुझे here पढ़ने के अलावा इन पुस्तकालयों के बारे में बहुत कुछ पता नहीं है, लेकिन मुझे लगता है कि आर को यह बताने का एक तरीका होना चाहिए कि मुझे कौन सा मैट्रिक्स पुस्तकालय स्थापित किया गया था (यानी इसका उपयोग कर रहा है), समान sessionInfo() से मुझे यह बताने के लिए कि आर पैकेज का कौन सा संस्करण इसका उपयोग कर रहा है।मैं कैसे निर्धारित कर सकता हूं कि मेरी आर इंस्टॉल किस मैट्रिक्स लाइब्रेरी का उपयोग कर रही है?
उत्तर
हालांकि इस के लिए एक स्पष्ट आर समारोह नहीं हो सकता है, शायद आप खोल आदेशों को भुनाने कर सकते हैं (उदाहरण के लिए , file
और ldd
) क्लस्टर पर पुनर्निर्माण आर और न ही रूट पहुँच की आवश्यकता के बिना कुछ सुराग पाने के लिए:
(rpath <- Sys.which("R"))
# R
# "/usr/bin/R"
सुनिश्चित करें कि ldd
काम करेंगे बनाने के लिए, देखें कि यह है किस प्रकार की फ़ाइल:
system2("file", rpath)
# /usr/bin/R: Bourne-Again shell script, ASCII text executable
यदि आपका वास्तविक निष्पादन योग्य (जैसे ELF 64-bit LSB executable, x86-64, ...
) दिखाता है, तो इस चरण को छोड़ दें।
script <- readLines(rpath)
script[grepl("/bin/", script)]
# [1] "#!/bin/bash"
# [2] " if [ -x \"/usr/${libnn}/R/bin/exec/R\" ]; then"
# [3] " elif [ -x \"/usr/${libnn_fallback}/R/bin/exec/R\" ]; then"
# [4] "## some systems have a more portable sed, e.g. /usr/xpg4/bin/sed on Solaris,"
# [5] "SED=/bin/sed"
# [6] " exec sh \"${R_HOME}/bin/Rcmd\" \"${@}\" ;;"
# [7] "R_binary=\"${R_HOME}/bin/exec${R_ARCH}/R\""
यह मुझसे कहता है कि वास्तविक निष्पादन /usr/lib/R/bin/exec/R
(या /usr/lib64/...
) है। यह कुछ अनुमान ले रहा है, लेकिन यह एक कदम है। यह मेरे लिए उबंटू पर आर-3.3.2 के साथ काम कर रहा है, इसलिए मैं केवल यह मान सकता हूं कि यह विभिन्न ओएस पर समान होगा। यदि यह अनौपचारिक है, तो आप "/lib"
या "/exec"
(या अन्य सुरागों के लिए पूरी स्क्रिप्ट फ़ाइल की जांच करें) के लिए grep भी कर सकते हैं।
एक बार जब आप पथ स्क्रिप्ट के द्वारा कहा जाता है पता है (या अगर यह एक स्क्रिप्ट के साथ शुरू करने के लिए नहीं है), साझा पुस्तकालय निर्भरता पाते हैं:
system2("ldd", "/usr/lib/R/bin/exec/R")
# linux-vdso.so.1 => (0x00007ffcfadcd000)
# libR.so => /usr/lib/R/lib/libR.so (0x00007f746f615000)
# libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f746f3eb000)
# libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f746f025000)
# libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f746eda8000)
# libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f746eaa2000)
# libreadline.so.6 => /lib/x86_64-linux-gnu/libreadline.so.6 (0x00007f746e85b000)
# libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f746e61d000)
# liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f746e3fb000)
# libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f746e1ea000)
# libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f746dfd1000)
# librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f746ddc9000)
# libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f746dbc4000)
# libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f746d9b5000)
# /lib64/ld-linux-x86-64.so.2 (0x0000560abd5fa000)
# libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f746d78b000)
इस उत्पादन की 5 वीं पंक्ति से पता चलता है R है कि बीएलएएस लाइब्रेरी का उपयोग करके, विशेष रूप से libblas3
।
पर्याप्त googling ?: http://www.stat.cmu.edu/~nmv/2013/07/09/for-faster-r-use-openblas-instead-better-than-atlas-trivial-to-switch-to-on-ubuntu/
आपकी प्रतिक्रिया के लिए धन्यवाद। उस लेख के पढ़ने से, यह विभिन्न मैट्रिक्स पुस्तकालयों के साथ आर बनाने के बारे में जानकारी प्रदान करता है, लेकिन यह पता लगाने में मेरी सहायता नहीं करता कि मौजूदा निर्माण में कौन सी मैट्रिक्स लाइब्रेरी का उपयोग किया गया था। – rcorty
का एक सा है जहां तक मेरा जानकारी है वहाँ एक विशेष समारोह (विशेष रूप से नहीं आधार आर में) आप BLAS संस्करण दे देंगे नहीं है। आर आपके सिस्टम के साथ आने वाली मानक लाइब्रेरी का अधिकतर उपयोग करेगा (जब तक कि किसी ने इसे किसी विशिष्ट बीएलएएस संस्करण के साथ स्रोत से बनाया न हो)।
आप टर्मिनल से यह करने के लिए होगा, प्रकार
locate libblas.so
यह शायद /usr/lib/libblas.so
या /usr/lib64/libblas.so
में होने जा रहा है, और शायद एक स्थान सिमलिंक है। तो लिंक
ls -l /usr/lib/libblas.so
का पालन करें आप एक अलग BLAS पुस्तकालय को इंगित करने के सांकेतिक लिंक को बदलने के लिए चाहते हैं, आप update-alternatives --config libblas.so.3gf
करते हैं और संस्करण आप उपयोग करना चाहते चुन सकते हैं। यह पोस्ट इसे अधिक विस्तार से बताता है: https://www.r-bloggers.com/for-faster-r-use-openblas-instead-better-than-atlas-trivial-to-switch-to-on-ubuntu/
निश्चित रूप से यह जानने का एक और तरीका है कि आप किस संस्करण का उपयोग कर रहे हैं, जो आप चाहते हैं कि बीएलएएस के कार्यान्वयन को स्थापित करना होगा - उदाहरण के लिए ओपनबीएलएस, और फिर मानक आर बीएलएएस लाइब्रेरी को प्रतिस्थापित करें आपकी नई पुस्तकालय के लिए एक सिम्लिंक। के रूप में यहां से समझाया गया --with-shared-blas
विकल्प के साथ आर स्थापित करने के लिए सुनिश्चित करें,: https://cran.r-project.org/doc/manuals/r-release/R-admin.html#BLAS तो फिर तुम सिर्फ जरूरत के लिए:
# navigate to your R directory
cd …/path-to-R-installation/lib/R/lib
# backup the original
mv libRblas.so libRblas.backup
# create simlink
ln –s …/path-to-new-0blas-library/new-lib.so libRblas.so
अच्छा स्पष्टीकरण। मुझे लगता है कि @rcorty यह पता लगाने के लिए इसका उपयोग कर सकता है कि क्या ब्लैस वास्तव में समस्या का कारण है। ब्लैस पुस्तकालयों की एक श्रृंखला स्थापित करके और एक समय में परीक्षण करने के लिए प्रतीकात्मक लिंक अपडेट करके यह देखने के लिए कि क्या यह त्रुटि को दोहराता है या नहीं। – dww
आपकी प्रतिक्रिया के लिए धन्यवाद। मुझे विशेष रूप से उस स्थिति में दिलचस्पी है जहां कोई और, जिसे मैं मशीन के साथ साझा करता हूं, एक निर्दिष्ट मैट्रिक्स गणित पुस्तकालय के साथ स्रोत से आर बनाया गया है, उदाहरण के लिए। एटलस, बीएलएएस, ओपनब्लैस, इत्यादि। अगर मैं अपने प्रश्न में पर्याप्त स्पष्ट नहीं था। मैं उत्सुक हूं अगर मैं यह पता लगा सकता हूं कि उसने क्या किया। – rcorty
- 1. मैं कैसे निर्धारित कर सकता हूं कि मेरी प्रक्रिया
- 2. मैं कैसे निर्धारित कर सकता हूं कि उपयोगकर्ता के पास आईओएस ऐप इंस्टॉल है या नहीं?
- 3. मैं कैसे निर्धारित कर सकता हूं कि मेरा .NET प्रोग्राम कितना मेमोरी उपयोग कर रहा है?
- 4. मैं कैसे निर्धारित कर सकता हूं कि जावा क्लास प्रतिबिंब
- 5. मैं कैसे निर्धारित कर सकता हूं कि w3wp.exe प्रक्रिया किस वेबसाइट से संबंधित है?
- 6. क्या मैं साझा आयातित लाइब्रेरी इंस्टॉल कर सकता हूं?
- 7. मैं कैसे सुनिश्चित कर सकता हूं कि मेरी बैश स्क्रिप्ट पहले से चल रही नहीं है?
- 8. मैं कैसे बता सकता हूं कि मेरी स्पार्क नौकरी प्रगति कर रही है या नहीं?
- 9. मैं कैसे निर्धारित कर सकता हूं कि जावा थ्रेड किस कोर पर चल रहा है?
- 10. मैं कैसे निर्धारित कर सकता हूं कि मेरी प्रक्रिया पारस्परिक रूप से चल रही है या नहीं?
- 11. मैं कैसे निर्धारित कर सकता हूं कि UISearchDisplayController की खोजResultsTableView दिखाई दे रही है या नहीं?
- 12. मैं codebird.js ट्विटर लाइब्रेरी का उपयोग कैसे कर सकता हूं?
- 13. मैं कैसे निर्धारित कर सकता हूं कि मोबाइल सफारी किस प्रकार दुर्घटनाग्रस्त हो गया?
- 14. मैं कैसे निर्धारित कर सकता हूं कि कोई फ़ंक्शन ग्राफ़
- 15. मैं कैसे निर्धारित कर सकता हूं कि एंड्रॉइड पीडीएफ
- 16. मैं कैसे बता सकता हूं कि सर्वर किस प्रकार का प्रमाणीकरण उपयोग कर रहा है?
- 17. मैं कैसे पता लगा सकता हूं कि उपयोगकर्ता किस ब्राउज़र का उपयोग कर रहा है?
- 18. मैं प्रोग्रामिक रूप से यह निर्धारित कैसे कर सकता हूं कि आईआईएस साइट अनुरोध प्राप्त कर रही है या नहीं?
- 19. यह देखने के लिए कि मैं किस पुस्तकालयों का उपयोग कर रहा हूं, यह देखने के लिए एक चल रही प्रक्रिया की जांच कैसे कर सकता हूं?
- 20. मैं कैसे जांच सकता हूं कि बंदूकधारी काम कर रही है और nginx के साथ संचार कर रही है?
- 21. मैं जैमा का उपयोग कर वेक्टर द्वारा मैट्रिक्स को कैसे गुणा कर सकता हूं?
- 22. मैं कैसे निर्धारित कर सकता हूं कि सी/सी ++ कंपाइलर का उपयोग करने के लिए?
- 23. मैं कैसे निर्धारित कर सकता हूं कि मेरा एएसपी.NET एप्लिकेशन रीसाइक्लिंग क्यों कर रहा है
- 24. सरल, हल्के संदेश को पास करने के लिए मैं किस लाइब्रेरी का उपयोग कर सकता हूं?
- 25. मैं होमब्री का उपयोग कर रूबी 1.9.3 इंस्टॉल कैसे कर सकता हूं?
- 26. एंड्रॉइड पर छवि प्रसंस्करण - मैं किस लाइब्रेरी का उपयोग कर सकता हूं?
- 27. एरलांग के साथ जीयूआई बनाने के लिए मैं किस लाइब्रेरी का उपयोग कर सकता हूं?
- 28. मैं कैसे निर्धारित कर सकता हूं कि जावा में लोकेल के लिए वर्णमाला क्या है?
- 29. UIPanGestureRecognizer का उपयोग करके मैं किस दिशा को प्रतिबंधित कर रहा हूं कैप्चर कर सकता हूं?
- 30. मैं कैसे निर्धारित कर सकता हूं कि वीबीएस का उपयोग कर एक फाइल लॉक है या नहीं?
आपके संपूर्ण और विस्तृत उत्तर के लिए धन्यवाद। मैं इसे अपने आप पर कभी नहीं समझता। यह एक शर्म की बात है कि आर में "मेरे बारे में" फ़ंक्शन नहीं है, जैसे "आर - वर्जन", लेकिन शायद इसे "आर - बिल्डिंगप्शन" कहा जा सकता है। – rcorty