2016-02-25 5 views
6

मैं GPU का उपयोग करने के लिए एक aws उदाहरण में theano लाइब्रेरी आयात करने की कोशिश कर रहा हूं। मैंने aws सेटअप को स्वचालित करने के लिए बोटो का उपयोग करके एक पायथन लिपि लिखी है जो अनिवार्य रूप से मेरी स्थानीय मशीन से उदाहरण के लिए एसएसएच करेगी और फिर एक बैश स्क्रिप्ट शुरू करेगी जहां मैं GPU शुरू करने के लिए "पायथन-सी 'आयात थानो'" करता हूं। लेकिन मैं निम्नलिखित त्रुटि मिलती है:
cuda_ndarray.cu संकलित करने में विफल: libcublas.so.7.5: साझा ऑब्जेक्ट फ़ाइल नहीं खोल सकता

ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.7.5: cannot open shared object file: No such file or directory

जब मैं उदाहरण के आदेश में सीधे थेनो मॉड्यूल आयात करने के लिए यह शेल की कोशिश की स्वचालित रूप से GPU का उपयोग करके शुरू होता है।

Using gpu device 0: GRID K520 (CNMeM is disabled)

मुझे लगता है मैं कुछ अन्य आयात जबकि मेरी स्वचालन अजगर स्क्रिप्ट के माध्यम से आयात करने बना दिया है कि याद आ रही है। संभवतः समाधान क्या हो सकता है?

+2

एक पर्यावरण समस्या हो सकती है। पाइथन का प्रयास करें "आयात ओएस; प्रिंट (ओ। वातावरण [" पथ "])" और देखें कि "/ usr/local/cuda/bin" पथ में है या नहीं। – zaxliu

+0

यह सुनिश्चित करने के लिए कि 'सीडीडीए पुस्तकालय रनटाइम पर पाए जा सकें,' LD_LIBRARY_PATH' भी जांचें। – wildwilhelm

उत्तर

6

मैं स्पष्ट रूप से और संक्षिप्त इस समस्या को हल करने की कोशिश करेंगे, जैसा कि मैंने लोगों जो यूनिक्स का उपयोग कर शुरू कर रहे हैं या संकलन और जोड़ने से परिचित नहीं हैं के लिए वास्तव में अच्छा नहीं जवाब मिल गया।

समस्या को गतिशील लिंकिंग के साथ करना है और इसे दो तरीकों से हल किया जा सकता है। पहला एलडी_LIBRARY_PATH पर्यावरण चर सेट करके है।मान लिया जाये कि CUDA में/usr/स्थानीय/CUDA/स्थापित किया गया है, बस अपने वातावरण फ़ाइल/etc/वातावरण में जोड़ें:

LD_LIBRARY_PATH=/usr/local/cuda/ 

या बस अपने bashrc में:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64/ 

यह समाधान द्वारा अनुशंसित नहीं है यूनिक्स गुरु (मैं एक नहीं हूं मैंने इंटरनेट पर पढ़ा है और मैं लिनक्स गुरु का पालन करता हूं)। इसलिए मैंने जो समाधान पाया वह सरल है, उस पथ को संशोधित करें जहां लिनक्स एलडी सॉफ्टवेयर डिफ़ॉल्ट रूप से पुस्तकालयों के लिए खोज करता है। कि सिर्फ ऐसा करने के लिए (आप रूट के रूप में यह क्या करना है): इस फाइल के अंदर

vi libc.conf 

जैसे lib64 जड़ के लिए पथ जोड़ें::

cd /etc/ld.so.conf.d/ 

तो उदाहरण और संपादन के लिए लेने

/usr/local/cuda/lib64/ 

आप फ़ाइल में कुछ इस तरह मिलेगा:

\# libc default configuration 

/usr/local/lib 

/usr/local/cuda/lib64/ 

और फिर बस चलाने:

sudo ldconfig 

आशा इस जवाब लोग जो प्रोग्रामिंग, या ऐसे अजगर नीचे सी कोड का उपयोग करता है (जैसे थेनो करता है) के रूप में उच्च स्तरीय भाषाओं का उपयोग कर देखा और संकलन से परिचित नहीं हैं शुरू कर रहे हैं मदद करता है, linkig ...

3

मुझे हाल ही में एक ही समस्या थी और यह पता लगाना कि क्या गलत हो रहा था (जिस बिंदु पर मैंने अपने लिनक्स इंस्टॉल को दूषित कर दिया और उसे एक नया इंस्टॉल करना पड़ा)।

इस त्रुटि के लिए एक संभावित समाधानहै .theano/ निर्देशिका कि है (संभवतः) अपने घर निर्देशिका में स्थित हटाएँ:

sudo rm -rf ~/.theano 

फिर से होने से इस त्रुटि को रोकने के लिए, नहीं चला अपने रूट उपयोगकर्ता के रूप में स्क्रिप्ट (यानी sudo के बिना)।

रूट के रूप में एक स्क्रिप्ट चलाने से रूट अनुमतियों के साथ छिपी हुई निर्देशिका बन जाएगी, जिससे यह अन्य प्रक्रियाओं के लिए पहुंच योग्य हो जाएगी।

4

मैं CUDA 7.5 के साथ उबंटू 16.04 पर एक ही त्रुटि का सामना करना पड़ा और समाधान here पाया:

  1. CUDA 7.5 डिफ़ॉल्ट जी ++ संस्करण का समर्थन नहीं करते। एक समर्थित संस्करण स्थापित करें और यह डिफ़ॉल्ट बनाना:

    sudo apt-get install g++-4.9 
    
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20 
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10 
    
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20 
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10 
    
    sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 
    sudo update-alternatives --set cc /usr/bin/gcc 
    
    sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 
    sudo update-alternatives --set c++ /usr/bin/g++ 
    
  2. एक glibc बग के आसपास काम - निम्न सेटिंग के साथ घर निर्देशिका में .theanorc बनाएँ:

    [global] 
    device=gpu 
    floatX=float32 
    
    [nvcc] 
    flags=-D_FORCE_INLINES 
    

और नहीं है पर्यावरण चर जांचना भूलें: पाथ में आपके कुडा बिन फ़ोल्डर स्थान होना चाहिए और CUDA_HOME में कूडा घर का स्थान होना चाहिए

मैंने जोड़ा है खान खोदने में इस तरह से फाइल .bashrc:

export PATH="/usr/local/cuda/bin:$PATH" 
export CUDA_HOME="/usr/local/cuda:$CUDA_HOME" 
0

कुमार here के सुझाव पर, मैं

sudo ldconfig /usr/local/cuda/lib64 

किया था और यह जादुई काम करना शुरू किया। धन्यवाद कुमार!

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

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