Implementierung der Installation und Deinstallation von CUDA und CUDNN in Ubuntu

Implementierung der Installation und Deinstallation von CUDA und CUDNN in Ubuntu

Vorwort

Vor kurzem lerne ich, wie man PaddlePaddle auf verschiedenen Grafikkartentreiberversionen installiert und verwendet. Außerdem lerne ich, wie man CUDA und CUDNN in Ubuntu installiert und deinstalliert. Während des Lernvorgangs zeichne ich den Lernvorgang auch auf. Während es für alle etwas Lernen bedeutet, stärkt es auch Ihr eigenes Gedächtnis. In diesem Artikel wird die Deinstallation von CUDA 8.0 und CUDNN 7.05 als Beispiel sowie die Installation von CUDA 10.0 und CUDNN 7.4.2 als Beispiel verwendet.

Installieren des Grafiktreibers

Nouveau-Treiber deaktivieren

sudo vim /etc/modprobe.d/blacklist.conf

Fügen Sie am Ende des Textes hinzu:

schwarze Liste Jugendstil
Optionen nouveau modeset=0

Führen Sie dann Folgendes aus:

sudo update-initramfs -u

Führen Sie nach dem Neustart den folgenden Befehl aus. Wenn keine Bildschirmausgabe erfolgt, bedeutet dies, dass Nouveau erfolgreich deaktiviert wurde:

grep neu

Treiber herunterladen

Download-Adresse von der offiziellen Website: https://www.nvidia.cn/Download/index.aspx?lang=cn. Laden Sie die entsprechende Version des Grafikkartentreibers entsprechend Ihrer Grafikkarte herunter. Meine Grafikkarte ist beispielsweise RTX2070:

Nach Abschluss des Downloads erhalten Sie ein Installationspaket. Die Dateinamen verschiedener Versionen können unterschiedlich sein:

NVIDIA-Linux-x86_64-410.93.run

Deinstallieren Sie den alten Treiber

Die folgenden Vorgänge müssen in der Befehlsschnittstelle ausgeführt werden. Führen Sie die folgenden Tastenkombinationen aus, um die Befehlsschnittstelle aufzurufen und sich anzumelden:

Strg-Alt+F1

Um den X-Window-Dienst zu deaktivieren, führen Sie folgenden Befehl aus, da sonst der Grafiktreiber nicht installiert werden kann:

sudo service lightdm stop

Führen Sie die folgenden drei Befehle aus, um den ursprünglichen Grafiktreiber zu deinstallieren:

sudo apt-get remove --purge nvidia*
sudo chmod +x NVIDIA-Linux-x86_64-410.93.run
sudo ./NVIDIA-Linux-x86_64-410.93.run --uninstall

Installieren neuer Treiber

Sie können einen neuen Treiber installieren, indem Sie die Treiberdatei direkt ausführen. Die Standardeinstellung ist ausreichend:

sudo ./NVIDIA-Linux-x86_64-410.93.run

Führen Sie den folgenden Befehl aus, um den X-Window-Dienst zu starten:

sudo service lightdm starten

Führen Sie abschließend den Neustartbefehl aus, um das System neu zu starten:

Neustart

Hinweis: Kommt es nach dem Systemneustart zu wiederholten Anmeldungen, ist in den meisten Fällen die falsche Version des Grafiktreibers installiert. Sie müssen die Grafikkartenversion herunterladen, die der auf Ihrem Computer installierten entspricht.

Deinstallieren Sie CUDA

Warum habe ich CUDA am Anfang deinstalliert? Das liegt daran, dass ich die Grafikkarte auf RTX2070 umgestellt habe und die ursprünglich installierten CUDA 8.0 und CUDNN 7.0.5 nicht normal verwendet werden konnten. Ich musste CUDA 10.0 und CUDNN 7.4.2 installieren, also musste ich zuerst das ursprüngliche CUDA deinstallieren. Beachten Sie, dass die folgenden Befehle alle unter dem Root-Benutzer ausgeführt werden.

Die Deinstallation von CUDA ist sehr einfach, ein einziger Befehl genügt. Die Hauptausführung erfolgt über das mit CUDA gelieferte Deinstallationsskript. Leser müssen das Deinstallationsskript entsprechend ihrer eigenen CUDA-Version finden:

sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl

Nach der Deinstallation sind noch einige Restordner vorhanden, die zuvor mit CUDA 8.0 installiert wurden. Sie können sie alle zusammen löschen:

sudo rm -rf /usr/local/cuda-8.0/

Dadurch wird CUDA deinstalliert.

Installieren Sie CUDA

Installierte CUDA- und CUDNN-Versionen:

  • CUDA 10.0
  • CUDNN 7.4.2

Die folgenden Installationsschritte werden alle unter dem Root-Benutzer ausgeführt.

Laden Sie CUDA herunter und installieren Sie es

Wir können es auf der offiziellen Website herunterladen: CUDA10-Download-Seite,
Laden Sie die CUDA-Version herunter, die zu Ihrem System passt. Die Seite sieht wie folgt aus:

Nachdem der Download abgeschlossen ist, erteilen Sie der Datei Ausführungsberechtigungen:

chmod +x cuda_10.0.130_410.48_linux.run

Führen Sie das Installationspaket aus, um die Installation zu starten:

./cuda_10.0.130_410.48_linux.run

Nach dem Start der Installation müssen Sie die Anweisungen lesen. Sie können Ctrl + C drücken, um das Lesen direkt zu beenden, oder空格鍵verwenden, um langsam zu lesen. Dann konfigurieren Sie es. Lassen Sie es mich hier erklären:

(Stimmen Sie den Bedingungen zu? Sie müssen zustimmen, um mit der Installation fortzufahren.)
akzeptieren/ablehnen/beenden: akzeptieren

(Hier nicht den Treiber installieren, da der neuste Treiber installiert wurde. Andernfalls kann es sein, dass eine alte Version des Grafiktreibers installiert wird, was zu wiederholten Anmeldungen führt)
NVIDIA Accelerated Graphics-Treiber für Linux-x86_64 410.48 installieren?
(j)a/(n)ein/(n)ein: n

Das CUDA 10.0 Toolkit installieren? (Möchten Sie CUDA 10 installieren? Dies muss installiert sein.)
(j)es/(n)ein/(q)it: j

Geben Sie den Toolkit-Speicherort ein (Installationspfad, verwenden Sie den Standardpfad, drücken Sie einfach die Eingabetaste).
 [Standard ist /usr/local/cuda-10.0]: 

Möchten Sie einen symbolischen Link unter /usr/local/cuda installieren? (Stimmen Sie der Erstellung eines Softlinks zu)
(j)es/(n)ein/(q)it: j

Die CUDA 10.0-Beispiele installieren? (Der Test muss nicht installiert werden, er ist bereits vorhanden)
(j)a/(n)ein/(n)ein: n

Installieren des CUDA-Toolkits in /usr/local/cuda-10.0 …

Nachdem die Installation abgeschlossen ist, können Sie deren Umgebungsvariablen konfigurieren und die folgenden Konfigurationsinformationen am Ende von vim ~/.bashrc hinzufügen:

exportiere CUDA_HOME=/usr/local/cuda-10.0
exportiere LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}

Verwenden Sie abschließend den Befehl source ~/.bashrc damit der Vorgang wirksam wird.

Mit dem Befehl nvcc -V können Sie die Informationen zur installierten Version anzeigen:

test@test:~$ nvcc -V
nvcc: NVIDIA (R) Cuda-Compilertreiber
Copyright (c) 2005-2018 NVIDIA Corporation
Erstellt am Sat_Aug_25_21:08:01_CDT_2018
Cuda-Kompilierungstools, Version 10.0, V10.0.130

Testen Sie, ob die Installation erfolgreich ist

Führen Sie die folgenden Befehle aus:

cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
machen
./Geräteabfrage

Normale Ausgabe:

./deviceQuery wird gestartet …

 CUDA Device Query (Runtime API)-Version (statische Verknüpfung mit CUDART)

1 CUDA-fähiges Gerät erkannt

Gerät 0: „GeForce RTX 2070“
 CUDA-Treiberversion / Runtime-Version 10.0 / 10.0
 CUDA-Funktion Haupt-/Nebenversionsnummer: 7.5
 Gesamtmenge des globalen Speichers: 7950 MBytes (8335982592 Bytes)
 (36) Multiprozessoren, (64) CUDA Cores/MP: 2304 CUDA Cores
 Maximale GPU-Taktrate: 1620 MHz (1,62 GHz)
 Speichertaktrate: 7001 MHz
 Speicherbusbreite: 256 Bit
 L2-Cache-Größe: 4194304 Bytes
 Maximale Texturdimensionsgröße (x,y,z) 1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
 Maximale geschichtete 1D-Texturgröße, (Anzahl) Schichten 1D=(32768), 2048 Schichten
 Maximale geschichtete 2D-Texturgröße, (Anzahl) Schichten 2D=(32768, 32768), 2048 Schichten
 Gesamtmenge des konstanten Speichers: 65536 Bytes
 Gesamtmenge des gemeinsam genutzten Speichers pro Block: 49152 Bytes
 Gesamtzahl der pro Block verfügbaren Register: 65536
 Kettfadengröße: 32
 Maximale Anzahl Threads pro Multiprozessor: 1024
 Maximale Anzahl Threads pro Block: 1024
 Maximale Dimensionsgröße eines Threadblocks (x,y,z): (1024, 1024, 64)
 Maximale Dimensionsgröße einer Rastergröße (x,y,z): (2147483647, 65535, 65535)
 Maximaler Speicherabstand: 2147483647 Bytes
 Texturausrichtung: 512 Bytes
 Gleichzeitiges Kopieren und Kernel-Ausführen: Ja mit 3 Kopier-Engine(s)
 Laufzeitlimit für Kernel: Ja
 Integrierter GPU-Sharing-Hostspeicher: Nein
 Unterstützt seitengesperrtes Host-Speichermapping: Ja
 Ausrichtungsanforderung für Oberflächen: Ja
 Gerät hat ECC-Unterstützung: Deaktiviert
 Gerät unterstützt Unified Addressing (UVA): Ja
 Gerät unterstützt Compute Preemption: Ja
 Unterstützt kooperativen Kernelstart: Ja
 Unterstützt MultiDevice Co-op Kernel Launch: Ja
 Geräte-PCI-Domänen-ID / Bus-ID / Standort-ID: 0 / 1 / 0
 Rechenmodus:
  < Standard (mehrere Host-Threads können ::cudaSetDevice() gleichzeitig mit Gerät verwenden) >

deviceQuery, CUDA-Treiber = CUDART, CUDA-Treiberversion = 10.0, CUDA-Runtime-Version = 10.0, NumDevs = 1
Ergebnis = PASS

Laden Sie CUDNN herunter und installieren Sie es

Gehen Sie zur offiziellen Download-Website von CUDNN: https://developer.nvidia.com/rdp/cudnn-download und klicken Sie dann auf „Download“, um mit der Auswahl der Download-Version zu beginnen. Natürlich müssen Sie sich vor dem Herunterladen noch anmelden. Die Versionsauswahloberfläche ist wie folgt. Wir wählen cuDNN Library for Linux :

Nach dem Herunterladen ist es ein komprimiertes Paket wie folgt:

cudnn-10.0-linux-x64-v7.4.2.24.tgz

Anschließend entpacken Sie es mit folgendem Befehl:

tar -zxvf cudnn-10.0-linux-x64-v7.4.2.24.tgz

Nach der Dekomprimierung können Sie die folgenden Dateien erhalten:

cuda/include/cudnn.h
cuda/NVIDIA_SLA_cuDNN_Support.txt
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.7
cuda/lib64/libcudnn.so.7.4.2
cuda/lib64/libcudnn_static.a

Verwenden Sie die folgenden beiden Befehle, um diese Dateien in das CUDA-Verzeichnis zu kopieren:

cp cuda/lib64/* /usr/local/cuda-10.0/lib64/
cp cuda/include/* /usr/local/cuda-10.0/include/

Nachdem der Kopiervorgang abgeschlossen ist, können Sie mit dem folgenden Befehl die Versionsinformationen von CUDNN anzeigen:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

Ergebnisse der Testinstallation

An diesem Punkt ist die Installation von CUDA 10 und CUDNN 7.4.2 abgeschlossen. Sie können die entsprechende GPU-Version von Pytorch installieren, um zu testen, ob sie normal verwendet werden kann. Die Installation erfolgt wie folgt:

pip3 installieren https://download.pytorch.org/whl/cu100/torch-1.0.0-cp35-cp35m-linux_x86_64.whl
pip3 installieren torchvision

Testen Sie anschließend die Installation mit dem folgenden Verfahren:

Taschenlampe importieren
importiere torch.nn als nn
importiere torch.nn.functional als F
importiere torch.optim als optim
importiere torch.backends.cudnn als cudnn
aus Torchvision importierte Datensätze, transformiert


Klasse Net(nn.Modul):
 def __init__(selbst):
  super(Net, self).__init__()
  self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
  self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
  self.conv2_drop = nn.Dropout2d()
  self.fc1 = nn.Linear(320, 50)
  self.fc2 = nn.Linear(50, 10)

 def vorwärts(selbst, x):
  x = F.relu(F.max_pool2d(self.conv1(x), 2))
  x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
  x = x.view(-1, 320)
  x = F.relu(self.fc1(x))
  x = F.dropout(x, training=selbsttraining)
  x = selbst.fc2(x)
  gibt F.log_softmax(x, dim=1) zurück


def train(Modell, Gerät, Train_Loader, Optimierer, Epoche):
 modell.train()
 für batch_idx, (Daten, Ziel) in enumerate(train_loader):
  Daten, Ziel = Daten.zu(Gerät), Ziel.zu(Gerät)
  optimizer.zero_grad()
  Ausgabe = Modell(Daten)
  Verlust = F.nll_loss(Ausgabe, Ziel)
  Verlust.rückwärts()
  Optimierer.Schritt()
  wenn batch_idx % 10 == 0:
   drucken('Zug-Epoche: {} [{}/{} ({:.0f}%)]\tVerlust: {:.6f}'.format(
    Epoche, batch_idx * len(Daten), len(train_loader.dataset),
      100. * batch_idx / länge(train_loader), verlust.item()))

def main():
 cudnn.benchmark = Wahr
 torch.manual_seed(1)
 Gerät = Torch.Device("cuda")
 kwargs = {'num_workers': 1, 'pin_memory': True}
 train_loader = torch.utils.data.DataLoader(
  Datensätze.MNIST('../data', Zug=True, Download=True,
      transform = transformiert.Komponieren([
       transformiert.ToTensor(),
       transformiert.Normalisieren((0,1307,), (0,3081,))
      ])),
  Batchgröße = 64, Shuffle = True, **kwargs)

 Modell = Net().to(Gerät)
 Optimierer = optim.SGD(Modell.Parameter(), lr=0,01, Impuls=0,5)

 für Epoche im Bereich (1, 11):
  Zug (Modell, Gerät, Train_Loader, Optimierer, Epoche)


wenn __name__ == '__main__':
 hauptsächlich()

Wenn im Normalfall folgende Information ausgegeben wird, ist die Installation nachgewiesen:

Zugepoche: 1 [0/60000 (0%)] Verlust: 2,365850
Zugepoche: 1 [640/60000 (1%)] Verlust: 2,305295
Zugepoche: 1 [1280/60000 (2%)] Verlust: 2,301407
Zug Epoche: 1 [1920/60000 (3%)] Verlust: 2.316538
Zugepoche: 1 [2560/60000 (4%)] Verlust: 2,255809
Zugepoche: 1 [3200/60000 (5%)] Verlust: 2,224511
Zugepoche: 1 [3840/60000 (6%)] Verlust: 2,216569
Zug Epoche: 1 [4480/60000 (7%)] Verlust: 2.181396

Verweise

https://developer.nvidia.com

https://www.cnblogs.com/luofeel/p/8654964.html

Dies ist das Ende dieses Artikels zur Installation und Deinstallation von CUDA und CUDNN unter Ubuntu. Weitere Informationen zur Installation und Deinstallation von CUDA und CUDNN unter Ubuntu finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Lösung für das Problem „Das Programm kann nicht gestartet werden, das System kann die angegebene Datei nicht finden“ beim Schreiben eines C-Programms oder eines CUDA-Programms in VS2019
  • Installation von CUDA10.0 und Probleme in Ubuntu
  • Detaillierte Konfiguration der Win10+VS2017+Cuda10.0-Umgebung
  • Detaillierte Erläuterung der Entsprechung zwischen verschiedenen Tensorflow-Versionsanforderungen und CUDA- und CUDNN-Versionen
  • Detailliertes Tutorial zur Installation von CUDA9.0 auf Ubuntu16.04
  • Schritte zur Installation von cuda10.1 unter Ubuntu 20.04 (grafisches Tutorial)
  • Ubuntu 20.04 CUDA- und cuDNN-Installationsmethode (grafisches Tutorial)
  • Manjaro-Installation CUDA-Implementierungs-Tutorial-Analyse

<<:  Vollständige Analyse des MySQL INT-Typs

>>:  Erläuterung des Vue.js $refs-Anwendungsfalls

Artikel empfehlen

Vue implementiert Paging-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Einfaches Beispiel für den Grenzwertparameter der MySQL-Paging

Zwei Parameter der MySQL-Paging Wählen Sie * aus ...

MySQL-Kodierung utf8 und utf8mb4 utf8mb4_unicode_ci und utf8mb4_general_ci

Referenz: MySQL-Zeichensatzübersicht utf8mb4 wurd...

Docker installiert MySQL und löst das chinesische verstümmelte Problem

Inhaltsverzeichnis 1. Ziehen Sie das MySQL-Image ...

Optimierung der Web-Frontend-Leistung

Best Practices für die Web-Frontend-Optimierung: ...

jQuery-Plugin zur Implementierung des sekundären Akkordeonmenüs

Dieser Artikel verwendet ein jQuery-Plugin, um ei...

Front-End-JavaScript versteht Funktions-Currying gründlich

Inhaltsverzeichnis 1. Was ist Curry 2. Verwendung...

Die Hook-Funktion von Vue-Router implementiert Routing Guard

Inhaltsverzeichnis Überblick Globale Hook-Funktio...

Drei gängige Methoden, um HTML-Seiten nach 3 Sekunden automatisch zu springen

In der Praxis stoßen wir häufig auf ein Problem: ...

Echarts-Tutorial zur Implementierung von Baumdiagrammen

Treemaps dienen vor allem der Visualisierung baum...