2016-03-31 4 views
1

Ich arbeite auf Bioprozessor Debian Wheezy Server mit 4 Nvidia K20m Karten. Ich benutze tatsächlich CUDA 5 mit 304.54 Treiber und GCC 4.6.3, aber ich möchte auf Debian Jessie (GCC 4.9) und CUDA 7.5 aktualisieren. Ich werte CUDA 7.5 bereits aus, was zu anderen Ergebnissen führt als CUDA 5, da NVCC Anweisungen verwendet (z. B .: FMA-Anweisungen werden nicht an den gleichen Stellen verwendet, siehe post).Verwenden Sie NVIDIA K20-Karten auf virtuellen Maschinen auf demselben Server mit verschiedenen CUDA SDK-Versionen

Das Hauptziel besteht darin, zwei verschiedene CUDA-Versionen auf diesem Server zu erhalten, um die Kompatibilität mit älteren Berechnungen zu erhalten und zukünftige CUDA-Funktionen vorzubereiten.

Ich denke, es gibt zwei Möglichkeiten:

  • A VMware ESXi oder Citrix XenServer Hypervisor die es erlauben, zwei virtuelle Maschinen (Wheezy/SDK 5 und Jessie/SDK 7.5) bis K20 Karten im Pass-Through-Modus verbunden zu schaffen . Ich kann diese Grafikkarten nicht in ihrer kompatiblen Hardwareliste anzeigen, aber in den NVidia-Treiber-Versionshinweisen steht, dass sie durchgehen (320.78 release notes auf Seite 11). Welchen Treiber muss ich auf der Hypervisor-Ebene installieren?
  • Installieren Sie die neuesten Nvidia-Treiber und verwenden Sie zwei NVidia docker containers mit verschiedenen Cuda SDK und Debian-Versionen. Ist es möglich, SDK 5 mit dem neuesten Treiber auszuführen?

Was denken Sie über diese Möglichkeiten? Hast du irgendeine Idee ?

Vielen Dank.

Antwort

2

Ich kann den Virtualisierungsvorschlag nicht kommentieren, aber es gibt kein Problem beim Ausführen des letzten Release-Treibers (so CUDA 7.5 zum Zeitpunkt des Schreibens) und mit älteren Toolkits.

Jedes CUDA-Toolkit-Release und seine Komponenten sind vollständig versioniert, so dass Sie die CUDA-Laufzeitumgebung und andere Bibliotheken (cuFFT, CUBLAS usw.) nicht aus verschiedenen Toolkit-Releases oder Ihrem eigenen Code mischen können. Treiber und die Treiber-API, die sie bereitstellen, sind jedoch rückwärts kompatibel. So können Sie die CUDA 7.5-Treiber- und Treiber-API mit der CUDA 5- oder CUDA 7.5-Laufzeit problemlos verwenden. Sie können jedoch keine neuere Laufzeit auf einem alten Treiber ausführen. Das erzeugt einen Laufzeitfehler. Ich habe das modules Dienstprogramm sehr nützlich für die Auswahl zwischen Toolkit/Runtime-Versionen für Entwicklung und Test gefunden. Meine aktuelle Entwicklungsbox hat jede Version zwischen 4.2 und 7.5 mit dem Treiber 7.5 installiert.

Beachten Sie auch, dass ältere Toolchains ältere Host-Compiler und Support-Bibliotheken benötigen. Wenn Sie also zu einer moderneren Distribution wechseln, müssen Sie sich noch eine Möglichkeit ausdenken, eine unterstützte gcc-Installation für das ältere Toolkit zu haben, das Sie verwenden möchten (weitere Informationen finden Sie in den Versionshinweisen zu Ihren Toolkits und this question). Viele Distributionen haben eingebaute Systeme, um mehrere Compiler-Versionen zu verwalten, aber es ist viele Jahre her, dass ich debian ausgeführt habe, daher bin ich mir nicht sicher über die Besonderheiten der alternativen Compilerversionsauswahl von debian.

+0

Vielen Dank für die Klärung der Treiber/Toolkit-Version. Auf dem Server habe ich den neuesten Treiber installiert, und ich erstelle ein Docker-Image mit SDK 7.5 auf Jessie und es funktioniert! Jetzt mache ich dasselbe mit SDK 5 auf Wheezy für die Abwärtskompatibilität. Ich versuche, Docker zu verwenden, weil ich isolierte Umgebung erhalten möchte, ohne mit GCC-Version zu spielen. Schließlich, wenn es nicht funktioniert, werde ich das Modul-Dienstprogramm verwenden. – Calex

0

Der Versuch, Talonmies zu ergänzen, antworten auf der Virtualisierungsseite. Es ist möglich, zwei Betriebssysteminstanzen mit zwei verschiedenen Treiberversionen und/oder CUDA-Versionen auf derselben Karte zu haben. Dies ist jedoch meines Wissens nur mit PCI Pass-Through möglich, also jeweils nur eine Instanz. Mit dieser Konfiguration hat der VM-Gast die volle Kontrolle über das PCI-Gerät und der Hypervisor benötigt keine spezifischen Treiber.

Die gleichzeitige Verwendung desselben Geräts von zwei verschiedenen Instanzen erfordert eine Treiberkomponente auf der Hypervisor-Ebene (siehe NVIDIA GRID), für die ich die aktuelle Unterstützungsebene von CUDA nicht kenne.

Verwandte Themen