Gelişmiş Responsive Navigasyon Menüsü

CUDA, cuDNN ve Sürücü Matrisi: Hızlı Referans ve Uyumluluk Kılavuzu | Yapay Zeka Server
Teknik Blog
GPU Yazılım Altyapısı · Hızlı Referans

CUDA, cuDNN ve Sürücü Matrisi: Ne Neyle Çalışır?

Uyumluluk sorunları GPU altyapısında zaman kaybının en büyük kaynağıdır. Bu rehber sizi saatlerce sürebilecek hata ayıklamadan kurtarmak için tasarlandı.

01

Neden Bu Kadar Karmaşık?

CUDA, cuDNN, sürücü ve framework sürümleri birbirinden bağımsız gelişir; ancak hepsi uyumlu olmak zorundadır. Tek bir yanlış kombinasyon tüm sistemi çalışmaz hale getirebilir.

NVIDIA'nın GPU yazılım yığını dört bağımsız bileşenden oluşur: Kernel Driver, CUDA Toolkit, cuDNN ve üst seviye framework (PyTorch, TensorFlow vb.). Her katman kendi sürüm döngüsüyle yayınlanır ve aralarındaki uyumluluk ilişkisi her yeni sürümde yeniden tanımlanır.

Bu bileşenlerin arasındaki ilişkiyi anlamak için şunu bilmek gerekir: nvidia-smi'nin gösterdiği CUDA sürümü ile gerçekte kullanılan CUDA Toolkit sürümü farklı şeylerdir. Bu tek yanlış anlama, her yıl binlerce mühendisi saatlerce hata ayıklamaya mahkûm eder.

📌 Temel Kavram

nvidia-smi çıktısındaki "CUDA Version" değeri, o sürücünün destekleyebildiği maksimum CUDA sürümünü gösterir; sisteminizde kurulu olan CUDA Toolkit sürümünü değil. Gerçek Toolkit sürümü için: nvcc --version

"Sürücünüz CUDA 12.4'ü destekliyorsa, CUDA 12.4 veya altındaki herhangi bir Toolkit versiyonunu kullanabilirsiniz — ama kurulu olmayan bir şeyi kullanamazsınız."

— NVIDIA CUDA Compatibility Dokümantasyonu
02

Sürücü CUDA Uyumluluk Tablosu

NVIDIA sürücüsü minimum bir CUDA sürümünü gerektirir ve maksimum bir CUDA sürümünü destekler. Aşağıdaki tablo en yaygın kullanılan üretim sürücü aralıklarını kapsar.

Sürücü Serisi Min. Sürücü Ver. Max. Desteklenen CUDA Önerilen CUDA Toolkit Durum
570.x 570.00 CUDA 12.8 12.6 / 12.8 Güncel
560.x 560.28 CUDA 12.6 12.4 / 12.6 Aktif
550.x 550.54 CUDA 12.4 12.2 / 12.4 Kararlı
545.x 545.23 CUDA 12.3 12.2 / 12.3 Eski
535.x 535.54 CUDA 12.2 12.1 / 12.2 Eski
525.x 525.60 CUDA 12.0 12.0 Eski
520.x ve altı CUDA 11.x 11.8 Yükseltilmeli
470.x ve altı CUDA 11.4 EOL
✓ Geriye Dönük Uyumluluk

CUDA, geriye dönük uyumluluğu destekler: sürücünüz CUDA 12.6'yı destekliyorsa CUDA 11.8 ile derlenmiş uygulamalar çalışmaya devam eder. Bu özellik üretim ortamında kritik esneklik sağlar; ancak ileriye dönük uyumluluk (yani eski sürücüde daha yeni CUDA Toolkit) desteklenmez.

03

PyTorch, TensorFlow ve TensorRT Matrisi

Framework sürümleri belirli CUDA Toolkit sürümlerine karşı derlenir. Conda veya pip ile kurulum yapılırken CUDA sürümüne dikkat edilmemesi en yaygın uyumluluk hatasının kaynağıdır.

PyTorch ↔ CUDA Uyumu

PyTorch Sürümü Python CUDA 11.8 CUDA 12.1 CUDA 12.4 CUDA 12.6
2.5.x 3.9–3.12 Var Var Var Var
2.4.x 3.8–3.12 Var Var Var Yok
2.3.x 3.8–3.11 Var Var Yok Yok
2.2.x 3.8–3.11 Var Var Yok Yok
2.0.x 3.8–3.11 Var Kısmi Yok Yok
1.x 3.7–3.10 Kısmi Yok Yok Yok

TensorFlow ↔ CUDA Uyumu

TensorFlow Sürümü Python CUDA cuDNN Notlar
2.17.x 3.9–3.12 12.3 8.9 Güncel
2.16.x 3.9–3.12 12.3 8.9
2.15.x 3.9–3.11 12.2 8.9
2.14.x 3.9–3.11 11.8 8.7
2.12.x 3.8–3.11 11.8 8.6 LTS destek sonu yakın
2.10.x ve altı 11.2–11.7 8.1–8.4 Kullanmayın

TensorRT ↔ CUDA Uyumu

TensorRT Sürümü CUDA cuDNN Durum
10.x 12.0–12.6 8.9 / 9.x Güncel
8.6.x 11.8 / 12.0 8.6 / 8.9 Kararlı
8.5.x 11.8 8.6 Eski
8.4.x ve altı 11.x 8.x EOL
📌 pip install Tuzağı

pip install torch komutu varsayılan olarak CPU sürümü veya sisteme uymayan bir CUDA sürümünü indirebilir. Doğru kurulum için her zaman PyTorch'un resmi get-started sayfasından üretilen komutu kullanın: pip install torch --index-url https://download.pytorch.org/whl/cu124

04

cuDNN Sürüm Matrisi

cuDNN, derin öğrenme primitiflerini (konvolüsyon, pooling, normalizasyon vb.) GPU üzerinde hızlandıran kütüphanedir. Hem CUDA sürümüyle hem de framework'ün beklediği cuDNN sürümüyle uyumlu olması gerekir.

cuDNN Sürümü Desteklenen CUDA Min. Sürücü Flash Attention Durum
9.5.x 12.x 525.x v2 + v3 Güncel
9.4.x 12.x 525.x v2 + v3 Aktif
9.0.x 12.x 525.x v2 Kararlı
8.9.x 11.8 / 12.x 520.x v2 Kararlı
8.7.x 11.8 520.x v1 sınırlı Eski
8.6.x 11.8 520.x Yok Yükseltilmeli
8.4.x ve altı 11.x Yok Kullanmayın
⚠ cuDNN 8 → 9 Geçişinde Kırıcı Değişiklik

cuDNN 9 ile birlikte API yapısı önemli ölçüde değiştirilmiştir. cuDNN 8 için yazılmış özel CUDA kernel'leri veya düşük seviye cuDNN API çağrıları cuDNN 9 ile derlenmez. Framework'lerin büyük çoğunluğu bu geçişi kendi içinde yönetir; ancak özel CUDA extension'ı olan PyTorch modülleri bu geçişte yeniden derleme gerektirebilir.

05

Sık Yapılan 7 Hata

Aşağıdaki hatalar NVIDIA ekosistemiyle çalışan mühendislerin tekrar tekrar düştüğü tuzaklardır. Her birinin neden yapıldığını ve nasıl düzeltileceğini net biçimde aktarıyoruz.

1
nvidia-smi CUDA sürümünü gerçek toolkit sürümü sanmak
Hata

nvidia-smi çıktısında "CUDA Version: 12.4" gördükten sonra CUDA 12.4 kuruluymuş gibi davranmak. Framework kurulumu bu değere göre yapılır, çalışmaz.

Çözüm

Gerçek toolkit sürümü için nvcc --version çalıştırın. nvidia-smi'deki değer maksimum desteklenen sürümdür, kurulu olan değil.

2
pip install torch ile varsayılan paket indirmek
Hata

Sadece pip install torch komutuyla kurulum yapmak. Bu komut sisteminizin CUDA sürümünü dikkate almaz; genellikle CPU-only veya farklı bir CUDA sürümüne karşı derlenmiş PyTorch indirir.

Çözüm

PyTorch resmi sitesinden kendi ortamınıza uygun komutu alın. Örnek: pip install torch --index-url https://download.pytorch.org/whl/cu124

3
Sürücüyü güncellemeden CUDA Toolkit yükseltmek
Hata

CUDA 12.6 Toolkit kurulumu yapıp sürücüyü 520.x'te bırakmak. Toolkit çalışır görünür ancak bazı özellikler sessizce devre dışı kalır veya belirli API çağrılarında hata fırlatır.

Çözüm

Her zaman önce sürücüyü hedef CUDA Toolkit'i destekleyen sürüme güncelleyin. Kural: Sürücü önce, Toolkit sonra.

4
cuDNN'i yanlış dizine kurmak veya LD_LIBRARY_PATH'i ayarlamamak
Hata

cuDNN dosyalarını manuel olarak kopyalayıp LD_LIBRARY_PATH ayarlanmamış bırakmak. Framework başlatıldığında cuDNN kütüphanesini bulamazsa sessizce CPU moduna geçebilir veya hata verebilir.

Çözüm

cuDNN'i paket yöneticisiyle (apt, conda) kurun. Manuel kurulumda /etc/ld.so.conf.d/'ye yol ekleyin ve ldconfig çalıştırın.

5
conda install cudatoolkit ile sistem CUDA'yı karıştırmak
Hata

Conda ortamına cudatoolkit kuruluyken sistem PATH'inde ayrı bir CUDA kurulumu bulunduğunda ikisi çakışabilir. Hangi nvcc'nin kullanıldığı belirsizleşir.

Çözüm

which nvcc ve conda list | grep cuda ile aktif ortamı doğrulayın. Conda ortamlarında nvidia/label/cuda-12.x.x kanalından kurulum tercih edin.

6
Docker image içinde yanlış base image kullanmak
Hata

nvidia/cuda:12.0-base tag'ını kullanıp cuDNN gerektiren framework çalıştırmak. -base image sadece runtime içerir; cuDNN ve geliştirme araçları yoktur.

Çözüm

Eğitim/geliştirme için nvidia/cuda:12.x.x-cudnn-devel-ubuntu22.04 tag'ını kullanın. Inference için -cudnn-runtime yeterlidir.

7
TensorRT ve framework CUDA sürümlerini eşleştirmemek
Hata

PyTorch 2.4 (CUDA 12.4) ile TensorRT 8.5 (CUDA 11.8) birlikte kullanmak. TensorRT motorları farklı CUDA sürümlerine karşı derlenmiş olduğunda çalışmaz veya beklenmedik hatalar üretir.

Çözüm

PyTorch ve TensorRT'nin aynı CUDA major/minor sürümüne karşı derlenmiş olduğundan emin olun. NVIDIA'nın TensorRT-PyTorch uyumluluk matrisini takip edin.

06

Kurulum Kontrol Listesi

Yeni bir ortam kurarken veya mevcut bir ortamı güncellerken bu listeyi sırayla geçin. Her madde bağımsız bir hata kaynağını temsil eder.

Adım 1 — Sürücü ve Donanım Doğrulama
  • GPU modeli ve sürücü sürümünü doğrulayın: nvidia-smi
  • Sürücünün hedef CUDA sürümünü desteklediğini teyit edin (yukarıdaki tabloya bakın)
  • IOMMU / ECC durumunu kontrol edin (sunucu GPU'ları için): nvidia-smi --query-gpu=ecc.mode.current --format=csv
  • GPU sıcaklık ve güç durumunu kontrol edin: nvidia-smi dmon
Adım 2 — CUDA Toolkit Kurulumu
  • Kurulu CUDA Toolkit sürümünü kontrol edin: nvcc --version
  • CUDA örnek derleme testi yapın: cd /usr/local/cuda/samples/1_Utilities/deviceQuery && make && ./deviceQuery
  • PATH ve LD_LIBRARY_PATH'in doğru ayarlandığını doğrulayın
  • Birden fazla CUDA Toolkit kurulumu varsa update-alternatives ile aktif sürümü belirleyin
Adım 3 — cuDNN Doğrulama
  • cuDNN versiyonunu kontrol edin: cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
  • cuDNN'in framework'ün beklediği sürümle eşleştiğini teyit edin
  • cuDNN kütüphane dosyalarının erişilebilir olduğunu doğrulayın: ldconfig -p | grep libcudnn
Adım 4 — Framework Kurulumu
  • PyTorch GPU erişimini doğrulayın: python -c "import torch; print(torch.cuda.is_available(), torch.version.cuda)"
  • TensorFlow GPU erişimini doğrulayın: python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
  • Basit bir GPU tensör işlemi çalıştırarak performans testi yapın
  • Docker ortamında nvidia-container-toolkit'in kurulu olduğunu doğrulayın: docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi
Adım 5 — Üretim Ortamına Özgü
  • Kubernetes GPU device plugin'in aktif olduğunu doğrulayın: kubectl describe node | grep nvidia.com/gpu
  • DCGM Exporter'ın GPU metriklerini doğru raporladığını kontrol edin
  • Sürücü ve toolkit sürümlerini konfigürasyon yönetim sistemine (Ansible/Terraform) kaydedin
  • Sürücü güncellemesi öncesinde snapshot / rollback planı hazırlayın
07

Hızlı Tanı Komutları

Sorun yaşadığınızda çalıştırmanız gereken komutları tek bir yerde topladık. Destek talebinde bu komutların çıktılarını her zaman ekleyin.

diagnostic.sh — Tam sistem bilgisi bash
# ── Sürücü ve GPU ──────────────────────────────────
nvidia-smi                              # Sürücü, CUDA max, GPU durumu
nvidia-smi -q | grep "Driver Version\|CUDA Version"
nvidia-smi topo --matrix                # NVLink / PCIe topolojisi

# ── CUDA Toolkit ───────────────────────────────────
nvcc --version                          # Gerçek kurulu CUDA sürümü
ls /usr/local/ | grep cuda              # Tüm kurulu CUDA versiyonları
echo $PATH | tr ':' '\n' | grep cuda   # PATH'teki CUDA konumu

# ── cuDNN ──────────────────────────────────────────
cat /usr/include/cudnn_version.h | grep "CUDNN_MAJOR\|CUDNN_MINOR\|CUDNN_PATCHLEVEL"
ldconfig -p | grep libcudnn             # cuDNN kütüphane yolları
python3 -c "import ctypes; ctypes.cdll.LoadLibrary('libcudnn.so.9')"

# ── PyTorch ────────────────────────────────────────
python3 -c "import torch; print(
  'PyTorch:', torch.__version__,
  '| CUDA available:', torch.cuda.is_available(),
  '| CUDA version:', torch.version.cuda,
  '| cuDNN version:', torch.backends.cudnn.version(),
  '| GPU:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'N/A'
)"

# ── TensorFlow ─────────────────────────────────────
python3 -c "import tensorflow as tf; print(
  'TF:', tf.__version__,
  '| GPUs:', tf.config.list_physical_devices('GPU'),
  '| CUDA:', tf.sysconfig.get_build_info()['cuda_version'],
  '| cuDNN:', tf.sysconfig.get_build_info()['cudnn_version']
)"

# ── Docker ─────────────────────────────────────────
docker run --rm --gpus all nvidia/cuda:12.6.0-base-ubuntu22.04 nvidia-smi

Anlık Başvuru Kartı

Sürücü versiyonu
nvidia-smi
Gerçek CUDA Toolkit
nvcc --version
cuDNN versiyonu
cudnn_version.h
PyTorch GPU testi
torch.cuda.is_available()
En son kararlı PyTorch
2.5.x + CUDA 12.4
En son kararlı TF
2.17.x + CUDA 12.3
Önerilen cuDNN
9.4.x veya 8.9.x
Min. sürücü (CUDA 12)
525.x ve üzeri
✓ Altın Kural

Sürücü → CUDA Toolkit → cuDNN → Framework sırasını takip edin ve her bileşeni bir sonrakinin gerektirdiği sürüme göre seçin. Tersten gitmeyin: framework'ün istediği CUDA sürümünü belirleyin, o CUDA sürümünü destekleyen sürücüyü seçin, ardından uyumlu cuDNN'i kurun. Yukarıdan aşağıya değil, aşağıdan yukarıya.