Nvcc और NVIDIA-smi द्वारा दिखाए गए विभिन्न CUDA संस्करण


122

मैं चल रहे which nvccऔर दिखाए गए विभिन्न CUDA संस्करणों से बहुत भ्रमित हूं nvidia-smi

मेरे पास मेरे ubuntu 16.04 पर cuda9.2 और cuda10 दोनों स्थापित हैं। अब मैंने PATH को cuda9.2 पर इंगित करने के लिए सेट किया। इसलिए जब मैं दौड़ता हूं:

 $ which nvcc
 /usr/local/cuda-9.2/bin/nvcc

हालाँकि, जब मैं दौड़ता हूँ

$ nvidia-smi
Wed Nov 21 19:41:32 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.72       Driver Version: 410.72       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 106...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   53C    P0    26W /  N/A |    379MiB /  6078MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1324      G   /usr/lib/xorg/Xorg                           225MiB |
|    0      2844      G   compiz                                       146MiB |
|    0     15550      G   /usr/lib/firefox/firefox                       1MiB |
|    0     19992      G   /usr/lib/firefox/firefox                       1MiB |
|    0     23605      G   /usr/lib/firefox/firefox                       1MiB |

तो क्या मैं which nvccसुझाव के अनुसार cuda9.2 का उपयोग कर रहा हूं , या क्या मैं nvidia-smiसुझाव के अनुसार cuda10 का उपयोग कर रहा हूं ?

मैंने इस उत्तर को देखा, लेकिन यह भ्रम का सीधा जवाब नहीं देता है, यह सिर्फ हमें cudatoolkit को फिर से स्थापित करने के लिए कहता है, जो पहले ही किया था।


29
मुझे लगता है कि मैंने इस सटीक सवाल को पिछले कुछ दिनों में कई बार देखा है। लेकिन मैं अब एक डुप्लिकेट खोजने के लिए प्रतीत नहीं कर सकते। इसका उत्तर है: एनवीडिया-एसएमआई आपको CUDA संस्करण दिखाता है जो आपका ड्राइवर समर्थन करता है। आपने हाल ही में 410.x ड्राइवरों में से एक स्थापित किया है जो CUDA 10. का समर्थन करता है। जिस संस्करण का ड्राइवर समर्थन करता है उसका आपके द्वारा संकलित संस्करण से कोई लेना-देना नहीं है और आपके प्रोग्राम को इसके साथ लिंक करना है। एक चालक जो CUDA 10.0 का समर्थन करता है, वह CUDA 9.2 के लिए बनाया गया एक एप्लिकेशन भी चला सकेगा ...
Michael Kenzel

@MichaelKenzel मैं देख रहा हूँ। स्पष्टीकरण के लिए धन्यवाद! मुझे लगता है कि मैं CUDA9.2 का उपयोग कर रहा हूँ ..
युक्ली

इसी तरह का सवाल यहाँ है । @MichaelKenzel यदि आप एक उत्तर जोड़ना चाहते हैं तो मैं अपवोट करूंगा।
रॉबर्ट क्रुवला

1
@RobertCrovella हाँ, वह वही था जिसकी मुझे तलाश थी। मैंने केवल आपकी टिप्पणी का उत्तर वहां से सीखा है, इसलिए यदि कोई भी
उत्थान चाहता

जवाबों:


179

CUDA में 2 प्राथमिक API, रनटाइम और ड्राइवर API हैं। दोनों का एक ही संस्करण है (उदाहरण 8.0, 9.0, आदि)

ड्राइवर API के लिए आवश्यक समर्थन (जैसे linux पर libcuda.so) GPU ड्राइवर इंस्टॉलर द्वारा स्थापित किया गया है।

रनटाइम एपीआई के लिए आवश्यक समर्थन (जैसे linux पर libcudart.so, और भी nvcc) CUDA टूलकिट इंस्टॉलर (जिसमें इसमें GPU ड्राइवर इंस्टॉलर भी हो सकता है) द्वारा स्थापित किया गया है।

किसी भी घटना में, स्थापित (स्थापित) ड्राइवर एपीआई संस्करण हमेशा (स्थापित) रनटाइम एपीआई संस्करण से मेल नहीं खा सकता है, खासकर यदि आप सीयूडीए (यानी सीयूडीए टूलकिट) स्थापित करने से स्वतंत्र रूप से एक जीपीयू ड्राइवर स्थापित करते हैं।

nvidia-smiउपकरण GPU ड्राइवर संस्थापक द्वारा स्थापित हो जाता है, और आम तौर पर ध्यान में रखते हुए GPU ड्राइवर है, कुछ भी नहीं CUDA टूलकिट संस्थापक द्वारा स्थापित।

हाल ही में (कहीं ४१०.४ driver और ४१०. driver३ ड्राइवर लाइन पर ड्राइवर संस्करण के बीच) शक्तियां-कि-पर होना NVIDIA से चालक द्वारा स्थापित CUDA चालक एपीआई संस्करण की रिपोर्टिंग को आउटपुट में जोड़ने का फैसला किया nvidia-smi

यह स्थापित CUDA रनटाइम संस्करण से कोई संबंध नहीं है।

nvcc, CUDA संकलक-चालक उपकरण, जो CUDA टूलकिट के साथ स्थापित है, हमेशा CUDA रनटाइम संस्करण की रिपोर्ट करेगा जिसे इसे पहचानने के लिए बनाया गया था। यह कुछ भी नहीं जानता कि ड्राइवर संस्करण क्या है, या यहां तक ​​कि अगर एक GPU ड्राइवर स्थापित है।

इसलिए, डिजाइन के अनुसार, ये दो संख्याएं आवश्यक रूप से मेल नहीं खाती हैं, क्योंकि वे दो अलग-अलग चीजों के चिंतनशील हैं।

यदि आप सोच रहे हैं कि nvcc -VCUDA का एक संस्करण क्यों प्रदर्शित किया जाता है जिसकी आप अपेक्षा नहीं कर रहे थे (जैसे यह आपके द्वारा स्थापित किए गए एक संस्करण के अलावा एक संस्करण प्रदर्शित करता है) या बिल्कुल भी कुछ भी प्रदर्शित नहीं करता है, तो संस्करण, यह हो सकता है क्योंकि आप नहीं हैं चरण 7 (CUDA 11 से पहले) में अनिवार्य निर्देशों का पालन किया (या CUDA 11 लिनक्स इंस्टाल गाइड में चरण 6)। कोडा लाइन गाइड स्थापित करें

ध्यान दें कि हालांकि इस प्रश्न में ज्यादातर दृश्य हैं, वही अवधारणाएँ विंडोज़ CUDA इंस्टॉल पर लागू होती हैं । ड्राइवर के पास CUDA ड्राइवर संस्करण होता है nvidia-smi, जो इससे जुड़ा होता है ( उदाहरण के लिए, इससे पूछताछ की जा सकती है )। CUDA रनटाइम में CUDA रनटाइम संस्करण भी जुड़ा हुआ है। जरूरी नहीं कि दोनों सभी मामलों में मेल खाते हों।

ज्यादातर मामलों में, अगर nvidia-smiएक CUDA संस्करण की रिपोर्ट करता है जो संख्यात्मक रूप से रिपोर्ट किए गए या उससे अधिक के बराबर है nvcc -V, तो यह चिंता का कारण नहीं है। यह CUDA (नए ड्राइवर / ड्राइवर API समर्थन "पुराने" CUDA टूलकिट / रनटाइम API) में एक परिभाषित संगतता पथ है। उदाहरण के लिए यदि nvidia-smiरिपोर्ट CUDA 10.2, औरnvcc -V CUDA 10.1 की रिपोर्ट करता है, तो यह आमतौर पर चिंता का कारण नहीं है। यह सिर्फ काम करना चाहिए, और यह जरूरी नहीं है कि आपने "वास्तव में CUDA 10.2 स्थापित किया है जब आप CUDA 10.1 स्थापित करने का मतलब था"

यदि nvccकमांड कुछ भी रिपोर्ट नहीं करता है (उदाहरण के लिए Command 'nvcc' not found...), तो यह एक गलत CUDA इंस्टाल होने के कारण भी हो सकता है, अर्थात ऊपर उल्लेखित अनिवार्य चरण सही तरीके से नहीं किए गए थे। आप अपने निष्पादन योग्य को खोजने के लिए findया locate( जैसे कैसे, कृपया जानने के लिए आदमी पृष्ठों का उपयोग करें) एक लिनक्स उपयोगिता का उपयोग करके यह पता लगाना शुरू कर सकते हैं nvcc। यह मानते हुए कि केवल एक ही है, इसके पथ का उपयोग आपके PATH वातावरण चर को ठीक करने के लिए किया जा सकता है।



1
@ रॉबर्ट क्रोवेल्ला स्पष्टता के लिए धन्यवाद। मैं एक ही स्थिति nvidia-smi दिखाता है CUDA संस्करण 10.1 और nvcc 9.1 दिखाता है। अब नेटवर्क को प्रशिक्षित करना ठीक है या इंस्टॉलेशन ठीक है फिर भी काम करता है?
धीरेन हमाल

मैंने इंस्टालेशन के बाद के चरणों का पालन किया, लेकिन फिर भी, nvcc और nvidia-smi अलग-अलग
क्यूडा

यह पूरी तरह से संभव है। आप नवीनतम ड्राइवर स्थापित किया है (पैदा कर रहा nvidia-smiहै, लेकिन CUDA के पिछले संस्करण (जैसे कि, 10.1) तो एक अंतर द्वारा रिपोर्ट किया जाएगा CUDA 10.2, वर्तमान में प्रदर्शित करने के लिए) nvidia-smiकी तुलना में nvcc। यह उस मामले में कोई समस्या नहीं है।
रॉबर्ट क्रोवेल्ला

टिप्पणी मददगार है, लेकिन समझाती है कि क्या होता है यदि nvccउच्च संस्करण (10.2 कहते हैं) की तुलना में nvidia-smi(10.1 कहें)। उस स्थिति में, क्यूडा इसे 10.2 के रूप में संकलित करने की कोशिश करता है और 10.1 पर इसे चलाने की कोशिश करता है। यह आमतौर पर रनटाइम त्रुटि के परिणामस्वरूप होता है, "RuntimeError: CUDA error: no kernel image is available for execution on the device"उदाहरण के लिए।
कोश

5

nvccCUDA बिन फ़ोल्डर में है - जैसे कि CUDA बिन फ़ोल्डर आपके लिए जोड़ा गया है $PATH

विशेष रूप से, सुनिश्चित करें कि आपने CUDA पोस्ट-इंस्टॉलेशन क्रिया (जैसे यहाँ से ) की है:

  1. CUDA बिन को $PATHजोड़ें (यानी निम्नलिखित पंक्ति को अपने में जोड़ें ~/.bashrc)
export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}

पुनश्च। ऊपर दिए गए निम्नलिखित दो रास्तों को सुनिश्चित करें, पहले मौजूद हैं: /usr/local/cuda-10.1/binऔर /usr/local/cuda-10.1/NsightCompute-2019.1(NsightCompute पाथ स्थापित किए जा सकने वाले Nsight कंप्यूट के संस्करण के आधार पर थोड़ा अलग हो सकता है ...

  1. अद्यतन $LD_LIBRARY_PATH(यानी निम्नलिखित पंक्ति को अपने में जोड़ें ~/bashrc)।
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

इसके बाद, दोनों nvccऔर nvidia-smi(या nvtop) CUDA के एक ही संस्करण की रिपोर्ट करते हैं ...


ऐसा इसलिए है क्योंकि $ PATH $ CUDA 10. का उपयोग करता है, लेकिन कुछ सॉफ़्टवेयर को CUDA के विभिन्न संस्करणों की आवश्यकता होती है।
युक्ली

NsightCompute-2019.1NsightCompute-1.0CUDA 10.0 में कहा जाता है।
एस्ट्रिड

मैंने इंस्टालेशन के बाद के चरणों का पालन किया, लेकिन फिर भी, nvcc और nvidia-smi अलग-अलग
क्यूडा

हर बार जब मैं टर्मिनल खोलता हूं तो मुझे दो रास्तों कमांड (चरण 7 में कोडा पोस्ट इंस्टॉलेशन से) को चलाना होगा। क्या कोई रास्ता है जो मैं राज्य को बनाये रख सकता हूं और पथ आज्ञाओं को बार-बार चलाने के लिए नहीं है?
मोंटी

@ अज्ञात हां आप कमांड को लिख सकते हैं .bashrcया bash_profileइसलिए यह स्वचालित रूप से प्रत्येक बैश सत्र के लिए लोड करता है। यहां देखें: stackoverflow.com/questions/14637979/…
yuqli

0

यदि आप 10.2 का उपयोग कर रहे हैं:

export PATH=/usr/local/cuda-10.2/bin:/opt/nvidia/nsight-compute/2019.5.0${PATH:+:${PATH}}

मदद कर सकते हैं क्योंकि जब मैंने जाँच की, cuda-10.2 में nsight-compute के लिए कोई निर्देशिका नहीं थी। मुझे यकीन नहीं है कि अगर यह सिर्फ मेरे साथ समस्या थी या फिर वे आधिकारिक दस्तावेज में इसका उल्लेख क्यों नहीं करेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.