Nvcc ve NVIDIA-smi tarafından gösterilen farklı CUDA sürümleri


103

Çok çalıştırarak gösterilen farklı CUDA sürümleri tarafından karıştı which nvccve nvidia-smi.

Ubuntu 16.04'ümde hem cuda9.2 hem de cuda10 yüklü. Şimdi PATH'i cuda9.2'yi gösterecek şekilde ayarladım. Öyleyse koştuğumda:

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

Ancak koştuğumda

$ 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 |

Öyleyse önerildiği gibi which nvcccuda9.2 nvidia-smimi kullanıyorum yoksa önerildiği gibi cuda10 mu kullanıyorum ?

Ben bu sorunun cevabını bulmuştur ama karışıklığa doğrudan cevap vermez, sadece bulmuş olmam cudatoolkit, yeniden bize soruyor.


24
Sanırım bu sorunun son birkaç gün içinde birçok kez sorulduğunu gördüm. Ama şimdi bir kopyasını bulamıyorum. Cevap şudur: nvidia-smi size sürücünüzün desteklediği CUDA sürümünü gösterir. CUDA 10'u destekleyen son 410.x sürücülerinden birine sahipsiniz. Sürücünün desteklediği sürümün, derlediğiniz ve programınızı ona bağladığınız sürümle ilgisi yoktur. CUDA 10.0'ı destekleyen bir sürücü, CUDA 9.2 için oluşturulmuş bir uygulamayı da çalıştırabilecektir…
Michael Kenzel

@MichaelKenzel görüyorum. Açıklama için teşekkürler! Sonra CUDA9.2 kullanıyorum Tahmin ..
yuqli

Benzer bir soru da burada . @MichaelKenzel bir cevap eklemek istersen oy veririm.
Robert Crovella

@RobertCrovella evet, aradığım buydu. Cevabı sadece oradaki yorumunuzdan öğrendim, bu yüzden herhangi biri bir oylamayı hak ediyorsa o zaman sizsiniz;)
Michael Kenzel

Yanıtlar:


158

CUDA'nın 2 birincil API'si, çalışma zamanı ve sürücü API'si vardır. Her ikisinin de karşılık gelen bir sürümü vardır (ör. 8.0, 9.0, vb.)

Sürücü API'si için gerekli destek (örneğin linux üzerinde libcuda.so) GPU sürücü yükleyicisi tarafından yüklenir.

Çalışma zamanı API'si için gerekli destek (örn. Linux üzerinde libcudart.so ve ayrıca nvcc) CUDA araç seti yükleyicisi (ayrıca içinde bir GPU sürücü yükleyicisi de olabilir) tarafından yüklenir.

Her durumda, (yüklü) sürücü API sürümü, özellikle CUDA'yı (yani CUDA araç takımı) yüklemeden bağımsız olarak bir GPU sürücüsü yüklerseniz, (yüklü) çalışma zamanı API sürümüyle her zaman eşleşmeyebilir.

nvidia-smiAracı GPU sürücü yükleyicisi tarafından yüklenen ve genellikle görünümde GPU sürücüsünü sahiptir alır, herhangi bir şey değil CUDA araç tarafından kurulumundan.

Son zamanlarda (linux üzerinde 410.48 ile 410.73 sürücü sürümü arasında bir yerde) NVIDIA'daki güçler, sürücü tarafından yüklenen CUDA Driver API sürümünün raporlamasını nvidia-smi.

Bunun kurulu CUDA çalışma zamanı sürümüyle bağlantısı yoktur.

nvcc, CUDA araç takımı ile yüklenen CUDA derleyici sürücü aracı, her zaman tanımak için oluşturulmuş CUDA çalışma zamanı sürümünü bildirir. Hangi sürücü sürümünün yüklü olduğu veya bir GPU sürücüsü yüklü olsa bile hiçbir şey bilmiyor.

Bu nedenle, tasarım gereği, bu iki sayı, iki farklı şeyi yansıttığı için mutlaka birbiriyle eşleşmez.

CUDA'nın neden nvcc -Vbeklemediğiniz bir sürümünü görüntülediğini merak ediyorsanız (örneğin, kurduğunuzu düşündüğünüzden farklı bir sürümü görüntülüyor) veya hiçbir şey göstermiyorsa, sürüm açısından, bunun nedeni cuda linux kurulum kılavuzunun 7. adımındaki (CUDA 11'den önce) (veya CUDA 11 linux kurulum kılavuzundaki 6. adımı) zorunlu talimatları takip etti

Bu soruda çoğunlukla linux bulunsa da, aynı kavramlar Windows CUDA kurulumları için de geçerlidir . Sürücünün kendisiyle ilişkilendirilmiş bir CUDA sürücü sürümü vardır ( nvidia-smiörneğin sorgulanabilir ). CUDA çalışma zamanı ayrıca kendisiyle ilişkilendirilmiş bir CUDA çalışma zamanı sürümüne sahiptir. İkisi her durumda mutlaka eşleşmeyecektir.

Çoğu durumda, nvidia-smisayısal olarak bildirilene eşit veya daha yüksek bir CUDA sürümü bildirirse nvcc -V, bu endişe nedeni değildir. Bu, CUDA'da tanımlanmış bir uyumluluk yoludur (daha yeni sürücüler / sürücü API desteği "eski" CUDA araç setleri / çalışma zamanı API'si). Örneğin nvidia-smi, CUDA 10.2 rapor ederse ve nvcc -VCUDA 10.1 rapor ederse , bu genellikle endişe kaynağı değildir. Sadece çalışmalıdır ve "CUDA 10.1'i kurmayı düşündüğünüzde CUDA 10.2'yi gerçekten yüklediğiniz" anlamına gelmez.

Eğer nvcckomut tüm (örneğin bir şey bildirmez Command 'nvcc' not found...), bu da bağlı olabilir yanlış CUDA yükleyin zorunlu adımlar yukarıda belirtilen yani doğru gerçekleştirilmedi. Çalıştırılabilir dosyanızı bulmak için findveya locate(nasıl yapılacağını öğrenmek için lütfen man sayfalarını kullanın) gibi bir linux yardımcı programı kullanarak bunu anlamaya başlayabilirsiniz nvcc. Yalnızca bir tane olduğunu varsayarsak, yol daha sonra PATH ortam değişkeninizi düzeltmek için kullanılabilir.



1
@Rober Crovella Açıklık için teşekkürler. Aynı duruma sahibim nvidia-smi CUDA sürüm 10.1'i gösteriyor ve nvcc 9.1'i gösteriyor. Şimdi ağı eğitmek doğru mu yoksa kurulum hala çalışıyor mu?
Dhiren Cemal

Kurulum sonrası adımları takip ettim, ancak yine de nvcc ve nvidia-smi farklı
cuda

Bu tamamen mümkün. En son sürücüyü yüklediyseniz ( nvidia-smişu anda CUDA 10.2'yi görüntülemeye neden oluyor ) ancak CUDA'nın önceki bir sürümünü (örneğin 10.1) kurduysanız, ile nvidia-smikarşılaştırıldığında tarafından bildirilen bir fark olacaktır nvcc. Bu durumda sorun değil.
Robert Crovella

Yorum yararlıdır, ancak (10.1) nvccden daha yüksek bir sürüm (örneğin 10.2) bildirirse ne olacağını açıklamaz nvidia-smi. Bu durumda Cuda onu 10.2 olarak derlemeye ve 10.1'de çalıştırmaya çalışır. Bu genellikle "RuntimeError: CUDA error: no kernel image is available for execution on the device"örnek olarak çalışma zamanı hatasıyla sonuçlanır .
TheSaurus

3

nvccCUDA bin klasöründe - bu nedenle CUDA bin klasörünün $PATH.

Özellikle, CUDA Kurulum Sonrası eylemlerini gerçekleştirdiğinizden emin olun (örn. Buradan ):

  1. CUDA Bölmesini $PATHekleyin (yani aşağıdaki satırı ekleyiniz ~/.bashrc)
export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}

PS. Yukarıdaki iki yolun önce var olduğundan emin olun: /usr/local/cuda-10.1/binve /usr/local/cuda-10.1/NsightCompute-2019.1(NsightCompute yolunun, yüklü Nsight hesaplama sürümüne bağlı olarak biraz farklı bir sonu olabilir ...

  1. Güncelleme $LD_LIBRARY_PATH(yani aşağıdaki satırı ekleyiniz ~/bashrc)
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Bundan sonra, hem nvccve nvidia-smi(veya nvtop) CUDA'nın aynı sürümünü rapor edin ...


Bunun nedeni, $ PATH $ 'ın CUDA 10 kullanarak belirtmesidir. Ancak bazı yazılımlar CUDA'nın farklı sürümlerini gerektirir.
yuqli

NsightCompute-2019.1NsightCompute-1.0CUDA 10.0'da denir .
Astrid

Kurulum sonrası adımları takip ettim, ancak yine de nvcc ve nvidia-smi farklı
cuda

Terminali her açtığımda iki yol komutunu çalıştırmam gerekiyor (adım 7'deki cuda post kurulumundan). Durumu sürdürmek ve yol komutlarını tekrar tekrar çalıştırmak zorunda kalmamak için bir yol var mı?
monti

@monti Evet komutu yazabilirsiniz .bashrcya da bash_profileher bash oturumu için otomatik olarak yüklenir. Buraya bakın: stackoverflow.com/questions/14637979/…
yuqli

-1

Cuda 10.2 kullanıyorsanız:

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

yardımcı olabilir çünkü kontrol ettiğimde cuda-10.2'de nsight-compute için bir dizin yoktu. Bunun sadece benimle ilgili bir sorun olup olmadığından emin değilim ya da neden resmi belgelerde bundan bahsetmediler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.