NVIDIA प्राइम के साथ CUDA का उपयोग कैसे करें


10

मुझे इस पूरे वेब पर आधा दर्जन पोस्ट मिले हैं, लेकिन उनमें से कोई भी वास्तव में इस सवाल का जवाब नहीं देता है।

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

modprobe: ERROR: could not insert 'nvidia_352': No such device

मॉड्यूल के बिना, CUDA स्पष्ट रूप से काम नहीं करता है।

तो क्या वास्तव में एनवीडिया-प्राइम कर रहा है जो मॉड्यूल को लोड करना असंभव बनाता है? इसे ब्लैकलिस्ट नहीं किया गया है। कोई xorg.conf फ़ाइल नहीं है, इसलिए सिस्टम असतत एक के बजाय इंटेल GPU का उपयोग करने के लिए कैसे जानता है?

मैं Ubuntu 14.04 कारखाने के साथ Dell 5510 परिशुद्धता पर स्थापित हूं, और मेरा GPU Quadro M1000M है।

कुछ भौंरा का उपयोग करने का सुझाव देते हैं, लेकिन यह शुद्ध गणना भार के लिए आवश्यक नहीं होना चाहिए।

इसके अलावा, स्पष्ट रूप से भौंरा मॉड्यूल लोड करने में सक्षम है। तो वास्तव में यह क्या कर रहा है?

अपडेट: तो ऐसा हमेशा क्यों लगता है कि मुझे इसका जवाब मिल जाता है जब मैं आखिरकार एक सवाल पोस्ट करता हूं, घंटों इसे जानने की कोशिश करता हूं। यह केवल एक आंशिक उत्तर है, लेकिन मैं किसी चीज़ पर हूँ।

अब तक मैंने निर्धारित किया है कि प्राइम कम से कम दो चीजें करता है:

  • Bbswitch का उपयोग करके GPU को स्विच करें।
  • परिवर्तन विकल्प /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf के लिए।

GPU को वापस चालू करने के लिए bbswitch का उपयोग करके , मैं अब NVIDIA मॉड्यूल को लोड करने में सक्षम हूं।

लेकिन सवाल अभी भी बना हुआ है: केवल कम्प्यूटेशन्स के लिए NVIDIA कार्ड का उपयोग करने के लिए सिस्टम को कॉन्फ़िगर करने का सबसे अच्छा तरीका क्या है?

क्या मुझे इंटेल जीपीयू का उपयोग करने के लिए एनवीडिया-प्राइम सेट करना चाहिए, और मैन्युअल रूप से यह जानने की कोशिश करनी चाहिए कि CUDA को काम करने के लिए क्या करना चाहिए?

मैं यह कैसे सुनिश्चित करूँ कि सिस्टम अभी भी डिस्प्ले के लिए Intel GPU का उपयोग करता है?

मैं कैसे केवल NVIDIA प्राइम को अक्षम करने के बारे में जाऊंगा, और इसे सभी मैन्युअल रूप से कॉन्फ़िगर करूंगा?

या मुझे भौंरा और ऑप्टिरन का उपयोग करना चाहिए या नहीं। यदि कोई हो तो इसके क्या नुकसान हैं?

कोई सिफारिशें?


क्या आप NVIDIA X सर्वर सेटिंग्स ऐप में GPU पर प्रदर्शन को अक्षम कर सकते हैं?
रोजर डाहल

NVIDIA उपयोगिता केवल आपको Intel और NVIDIA GPU के बीच चयन करने की सुविधा देती है। यह ठीक दानेदार सेटिंग्स प्रदान नहीं करता है, जैसे कि प्रदर्शन के लिए किस कार्ड का उपयोग करना है।
orodbhen

जवाबों:


5

मेरे मामले में मैंने पाया कि NVidia कार्ड वास्तव में बंद नहीं किया गया था, और केवल एक चीज जो मुझे वास्तव में CUDA कोड को चलाने के लिए आवश्यक थी वह थी:

export LD_LIBRARY_PATH=/usr/lib/nvidia-352

उस शेल में जहां मैं इसे चलाना चाहता हूं (मैं मान रहा हूं कि विश्व स्तर पर विकल्प स्थापित करने से कॉम्पिट, आदि, आदि टूट जाएंगे) ...

इस बिंदु पर जाने के लिए (एक Dell Optiplex 7010 पर, Ubuntu 14.04, CUDA 7.5 और GTX 980 के साथ) मेरा मानना ​​है कि कदम थे:

  1. इंटेल का चयन करने के लिए PRIME प्रोफाइल टैब का उपयोग करें
  2. रिबूट, और BIOS में डिफ़ॉल्ट के रूप में इंटेल का चयन करें
  3. कम्प्यूटर बंद कीजिए
  4. ऑनबोर्ड वीडियो में मॉनिटर प्लग करें :)

अब तक सब कुछ ठीक काम कर रहा है (nvidia-smi कार्ड देखता है, cuda नमूने चलाते हैं, theano कार्ड का उपयोग करता है, आदि ...)


1
हाँ, दुर्भाग्य से एक सुसंगत समाधान प्रतीत नहीं होता है, यही कारण है कि मैं वास्तव में समझना चाहता था कि हुड के नीचे क्या चल रहा था।
orodbhen

2

मेरा मानना ​​है कि मैंने कम से कम इसे एक सरसरी समाधान पाया है, जैसा कि मेरे मूल पोस्ट के अपडेट में वर्णित है। वास्तव में मेरे पास दो समाधान हैं, हालांकि मुझे यकीन है कि अन्य हैं।

1 - इंटेल मोड में प्राइम के साथ, bbswitch के माध्यम से NVIDIA कार्ड को फिर से सक्षम करें , फिर modprobe nvidiaमॉड्यूल को लोड करने और डिवाइस नोड बनाने के लिए चलाएं ।

2 - जहां आप अपने सभी CUDA सामान कर सकते हैं से एक बैश सत्र शुरू करने के लिए भौंरा ऑप्टिरन का उपयोग करें।

इन दोनों समाधानों से आप अपने डिस्प्ले के लिए ऑनबोर्ड ग्राफिक्स का उपयोग कर सकते हैं, जबकि कंप्यूट लोड के लिए NVIDIA कार्ड का उपयोग कर सकते हैं। ऑप्टिरुन समाधान अधिक बहुमुखी लगता है, लेकिन मैं इसके अतिसूक्ष्मवाद के लिए पहला पसंद करता हूं।

मैं उम्मीद कर रहा हूं कि इस उत्तर पर किसी और समझ के साथ सुधार होगा।


क्या आप पहले विकल्प को अधिक स्पष्ट रूप से समझा सकते हैं? आप bbswitch का उपयोग करके कार्ड को कैसे चालू और बंद करते हैं?
अबोनेक

मुझे वास्तव में पता चला कि भौंरा कैसे अच्छी तरह से काम कर रहा है, और मुझे समय मिलने पर मैं अपना जवाब अपडेट करूंगा। मैं मूल रूप से पीछा इस । यह निराशाजनक है कि यह सामान बहुत खराब दस्तावेज है, क्योंकि यह वास्तव में काफी सरल है।
orodbhen

2

मैं केवल CUDA निष्पादन के लिए NVIDIA कार्ड का उपयोग करता हूं और इस दृष्टिकोण का पता लगाता हूं:

हर समय मैं इंटेल कार्ड का उपयोग करता हूं और इसकी पुष्टि कमांड द्वारा की जाती है lspci | grep -E "VGA|3D":

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

NVIDIA कार्ड के लिए इसी पंक्ति में आपको यह देखना चाहिए (rev ff)कि यह बंद हो गया है।

कार्ड को चालू करने के लिए और इसे CUDA संगणना के लिए उपयोग करने के लिए मैं निम्नलिखित दो आदेशों का उपयोग करता हूं:

sudo prime-select nvidia
sudo prime-switch

इसके बाद कमांड lspci | grep -E "VGA|3D"रिपोर्ट:

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)

के बारे में सूचना (rev a2), (rev ff)इसी पंक्ति में नहीं है। अब गणना के लिए तैयार कार्ड।

गणना के बाद मैं पिछड़े कार्यों का उपयोग करता हूं:

sudo prime-select intel
sudo prime-switch

और lspci | grep -E "VGA|3D"रिपोर्ट:

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

तो, मूल रूप से, आपको केवल प्राइम के साथ स्विच करने के बाद वापस लॉग इन करना होगा, यदि आप स्विच करना चाहते हैं कि कौन सा जीपीयू डिस्प्ले को चला रहा है? मैं उस के बावजूद नहीं था, लेकिन यह समझ में आता है। बेशक, आपको यह सुनिश्चित करने की आवश्यकता है कि आप लॉग आउट करने या पुनः आरंभ करने से पहले वापस स्विच करते हैं।
orodbhen

मैं इस दृष्टिकोण का उपयोग करता हूं। मैं इंटेल प्रोफाइल के साथ सक्रिय रूप से लॉग इन करता हूं, इसलिए Xorg और फ़ायरफ़ॉक्स GPU का उपयोग नहीं कर रहे हैं। फिर मैं एनवीडिया प्रोफाइल और अपने सभी CUDA काम पर स्विच करता हूं, फिर GPU पर जाता है और मेमोरी के लिए फ़ायरफ़ॉक्स और Xorg से मुकाबला नहीं करना पड़ता है :)!
जॉन

0

यदि किसी को अभी भी स्वीकार किए गए उत्तर में दिए गए चरणों का पालन करने के बाद समस्या आती है, तो यह प्रयास करें:

echo "install bbswitch /bin/true" > /etc/modprobe.d/blacklist-bbswitch.conf
update-initramfs -u

यह पूरी तरह से bbswitch को अक्षम कर देगा। दोष यह है कि आप बिजली की बचत के लिए NVIDIA कार्ड को बंद नहीं कर पाएंगे (Xorg अभी भी एकीकृत ग्राफिक्स का उपयोग करते हैं, जब तक prime-select intel)।


0

मैं एक थिंकपैड T420 के साथ 1070 टीआई का उपयोग कर रहा हूं, जैसे कि मैं काम करते समय मेरी क्रिप्टो-मुद्रा में सेट किया गया। जीपीयू सैद्धांतिक रूप से कुछ महीनों के बाद इस तरह से अपने लिए भुगतान करेगा।

मैंने पाया कि एनवीडिया 387 एक्सपोर्ट के साथ LD_LIBRARY_PATH = / usr / lib / nvidia-387 ने कॉड का उपयोग करते हुए एथमिनर के साथ काम किया।

हालाँकि, एक ही तरीका है कि मैं "प्राइम-सलेक्ट इंटेल" के बाद काम करते रहने के लिए सिस्टम पा सकता था, अगर मेरे पास सिलेक्शन होने पर दूसरा मॉनिटर कार्ड में प्लग होता और लॉग ऑफ होता। अन्यथा, मुझे "सिस्टम कम-ग्राफिक्स मोड में चल रहा है" त्रुटि, या एक निरंतर रिक्त स्क्रीन मिलेगी। बेशक, जब मैं इंटेल ग्राफिक्स चला रहा होता हूं, तो जीपीयू में प्लग किया गया मॉनिटर कुछ नहीं दिखाता है, इसलिए मुझे इसे जीपीयू से अनप्लग करना पड़ता है, और अपने द्वंद्व मोनिटर सेटअप को चलाने के लिए सिस्टम (डीवीआई डॉक आउटपुट) में वापस प्लग करना पड़ता है। ।

मेरा मानना ​​है कि यह इसलिए है क्योंकि gpu- प्रबंधक यह पता लगाता है कि bbswitch काम नहीं करता है और फिर xorg कॉन्फ़िगरेशन को हटा देता है।

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

log_file: /var/log/gpu-manager.log

last_boot_file: / var / lib / ubuntu-driver-common / last_gfx_boot new_boot_file: / var / lib / ubuntu-driver-common / last_gfx_boot / fudrx- मॉड्यूल में लोड / udc-fglrx-was-लोड की गई फ़ाइल तक नहीं पहुँच सकते। /modules/4.4.0-104-generic/updates/dkms /lib/modules/4.4.0-104-generic/updates/dkms में nvidia मॉड्यूल की खोज कर रहा है :vidia_387_drm.ko क्या nvidia भरी हुई है? हाँ क्या एनवीडिया अनलोड किया गया था? नहीं क्या एनवीडिया को ब्लैकलिस्ट किया गया है? हाँ क्या फॉग्रिक्स लोड किया गया है? नहीं, क्या फॉग्रॉक्स को उतार दिया गया था? नहीं क्या fglrx को ब्लैक लिस्टेड किया गया है? क्या इंटेल लोड नहीं है? हाँ क्या रैडॉन लोड किया गया है? नहीं, रैडॉन को ब्लैकलिस्ट किया गया है? क्या अमडग्पू लोड नहीं है? नहीं क्या अम्दगपू को ब्लैकलिस्ट किया गया है? नहीं, क्या नोव्यू लोड किया गया है? नो नोव्यू ब्लैक लिस्टेड है? हाँ क्या fglrx कर्नेल मॉड्यूल उपलब्ध है? क्या एनवीडिया कर्नेल मॉड्यूल उपलब्ध नहीं है? हां विक्रेता / डिवाइस आईडी: 8086: 126 BusID "PCI: 0 @ 0: 2: 0" बूट वोग है? हां विक्रेता / डिवाइस आईडी: 10de: 1b82 BusID "PCI: वर्तमान वर्तमान वैकल्पिक विकल्प: (अशक्त) वर्तमान ईगल विकल्प: /us/lib/nvidia-387-prime/ld.so.conf क्या एनवीडिया सक्षम है? नहीं एनवीडिया ईगल सक्षम है? नहीं, क्या fglrx सक्षम है? नहीं मेसा सक्षम है? नहीं मेसा ईगल सक्षम है? नहीं pxpress सक्षम है? नहीं प्रधान सक्षम है? हाँ क्या प्रधान ईगल सक्षम है? हाँ एनवीडिया उपलब्ध है? हाँ एनवीडिया ईगल उपलब्ध है? नहीं, क्या fglrx उपलब्ध है? नहीं क्या fglrx-core उपलब्ध है? कोई मेसा उपलब्ध नहीं है? हाँ मेसा ईगल उपलब्ध है? हाँ pxpress उपलब्ध है? प्राइम उपलब्ध नहीं है? हाँ प्राइम ईगल उपलब्ध है? No Intel IGP ने Intel हाइब्रिड सिस्टम Nvidia ड्राइवर वर्जन 387.34 का पता लगाया / खोजा / sys / class / dmi / id / product_version = "थिंकपैड T420" / sys / class / dmi / id / product_name = "4236L23" 1st try: bbswitch without quirks Loading bbswitch "load_state = -1 unload_state = 1" पैरामीटर त्रुटि: कर सकते हैं ' t खुले / proc / acpi / bbswitch हटाना xorg.conf। पथ: /etc/X11/xorg.conf /usr/share/gpu-manager.d/hybrid-power-saving एक्सेस नहीं कर सकता वर्तमान bbswitch स्थिति को बदलने की आवश्यकता है

अगर मैं इसके बाद xorg.conf का नैनो खाली कर दूं। मैं मॉनिटर स्विच ट्रिक करने के बाद पोस्ट कर रहा हूं, पृष्ठभूमि में चल रहे खनन के साथ, और मेरा xorg.conf अभी भी खाली है। तो मेरा अनुमान है कि किसी कारण से जब मैं मॉनिटर को प्लग-इन प्लग इन जीपीयू पर रखता हूं, तो पुनरारंभ होता है, इससे कोई फर्क नहीं पड़ता कि मेरा xorg.conf डिलीट हो गया है। कोई विचार?


इसके अलावा ... मैंने ऊपर बताए अनुसार bbswitch को ब्लैकलिस्ट कर दिया है, क्योंकि मुझे बूट पर इसके साथ एक निरंतर त्रुटि मिलेगी। मैं एक या दो बार एनवीडिया -384 का उपयोग करके इंटेल मोड में बूट करने में सक्षम था, लेकिन मुझे उस के साथ खनन करने में परेशानी हुई, और सोचा कि यह हो सकता है क्योंकि एनवीडिया -387 के साथ 1070 टीआई समर्थन जोड़ा गया था।
21:30
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.