2012-06-03 7 views
8

Manchmal führen Fehler in meinen CUDA-Programmen dazu, dass die Desktop-Grafik (in Windows) beschädigt wird. Normalerweise bleibt der Bildschirm etwas lesbar, aber wenn sich Grafiken ändern, z. B. beim Ziehen eines Fensters, erscheinen viele halb zufällige farbige Pixel und kleine Blöcke.Zurücksetzen von GPU und Treiber nach CUDA-Fehler

Ich habe versucht, die GPU und den Treiber durch Ändern der Desktop-Auflösung zurücksetzen, aber das hilft nicht. Die einzige Lösung, die ich gefunden habe, besteht darin, den Computer neu zu starten.

Gibt es ein Programm da draußen oder einen Trick, den ich verwenden kann, um den Treiber und die GPU ohne Neustart neu zu setzen?

Hintergrund:

Ich habe 1,0 hatte, 1.1, 1.3 und 2.0-Karten, aber ich habe nur eine 1.1 und 2.0-Karte jetzt. Ich habe das Problem auf 1.0 und 1.1 gesehen. Ich bin mir ziemlich sicher, dass ich es auf 1.3 gesehen habe. Ich bin unsicher über 2.0. Wurde der Speicherschutz irgendwann um 1,3 erhöht? Ich bin mir fast sicher, dass es nicht an instabiler Hardware liegt, da die Probleme anscheinend durch Fehler in meinem Code ausgelöst wurden und verschwunden sind, als die Fehler behoben wurden. Wenn der fertige Code ausgeführt wurde, waren die Karten stabil. Ich habe diese Frage geschrieben, nachdem ich sie auf meiner 1.1-Karte gesehen habe, aber sie ist verschwunden, nachdem ich einen Fehler behoben habe und jetzt habe ich keinen Code, der sie reproduziert. Vielleicht sollte ich versuchen, zufällig gewählte Positionen auf der 1.1-Karte und sehen zu schreiben, wenn etwas passiert ...

+0

Sie meinen, wenn Sie ein lang laufendes Cuda-Programm haben und der Fahrer abstürzt? – Tudor

+0

@Tudor: Nein, ich denke nicht die Zeit, die es braucht, um die Kernel-Faktoren hineinzulaufen. Es hängt nicht mit dem Watchdog-Timer zusammen. –

+2

Dies sollte wirklich nicht passieren, also sollten Sie Ihr Board auf Hardwareprobleme testen. Versuchen Sie zuerst, die Platine auszutauschen und dieselben fehlerverursachenden Programme auszuführen, um zu sehen, ob Sie sie reproduzieren können (idealerweise eine Instanz der gleichen Modellplatine und einer anderen Platine). Wenn es reproduziert, ist es wahrscheinlich kein Hardwareproblem. Sie könnten auch einen Speicher-Checker wie [this] (https://simtk.org/home/memtest/) ausprobieren (nicht sicher, ob es aktuell ist). – harrism

Antwort

6

Edit:

Wenn Sie auf Tesla-Hardware auf Linux und nvidia-smi laufen können Sie dann zurücksetzen kann die GPU

nvidia-smi -r 

oder

nvidia-smi --gpu-reset 

Hier ist die man Ausgabe für diesen Schalter:

Setzt den GPU-Status zurück. Kann verwendet werden, um Doppel-Bit-ECC-Fehler zu löschen oder erhitzte GPU wiederherzustellen. Erfordert -i, um auf ein bestimmtes Gerät zuzugreifen. Nur unter Linux verfügbar. Ansonsten

...


Die Art und Weise wirklich die Hardware zurückgesetzt wird, neu zu starten.

Was Sie beschreiben, sollte nicht passieren. Ich empfehle das Testen mit anderer Hardware und lassen Sie uns wissen, ob es noch auftritt.

+0

Vielen Dank für die Antwort. Ich habe einige Hintergrundinformationen hinzugefügt. Ich frage mich, ob die Leute, die dies als eine Lieblingsfrage gekennzeichnet haben, das Problem gesehen haben. –

+0

Was Sie hinzugefügt haben, ist wirklich ungenau. Sie benötigen einen präzisen Reprofall, um einen Fehler zu melden. – harrism

+0

Warum nicht einfach den Fehler beheben, der das Problem beseitigt hat, und dann das Programm vereinfachen, um einen einfachen Test durchzuführen. – harrism

2

Ich habe eine GeForce GTX 260 über NVIDIA GPU SDK 4.2 und ich habe einige Probleme. Manchmal habe ich Bugs in den Programmen. Dadurch werden auf dem Bildschirm die in diesem Beitrag beschriebenen zufälligen farbigen Pixel angezeigt.

Wie gesagt, wenn ich die Auflösung ändere, verschwinden sie nicht. Wenn ich nur die FARBTIEFE von 32 auf 16 Bits ändere, verschwinden die zufälligen farbigen Pixel, aber wenn ich wieder auf 32 Bits (ohne Neustart) zurückspringe, erscheinen sie wieder. Letzter Fehler, der dieses Verhalten verursacht wurde __constant__ Speicher verwenden, aber es als Zeiger übergeben:

test<<<grid, threadsPerBlock>>>(cuda_malloc_data, cuda_constant_data); 

Wenn ich nicht cudb_constant_data passiere, dann gibt es keinen Fehler (und damit auch die zufälligen farbigen Pixel erscheinen nicht mehr).

1

die Grafiken in Windows-Stack zurückzusetzen, drücken Win + Ctrl +Umschalt +B.

Verwandte Themen