GNU/Linux >> LINUX-Kenntnisse >  >> Linux

CUDA-Leistungseinbuße bei Ausführung unter Windows

Das Senden von GPU-Hardwarebefehlen über den WDDM-Stack ist mit ziemlich viel Overhead verbunden.

Wie Sie festgestellt haben, bedeutet dies, dass unter WDDM (nur) GPU-Befehle "gestapelt" werden können, um diesen Overhead zu amortisieren. Der Batching-Prozess kann (wahrscheinlich) zu einer gewissen Latenz führen, die variabel sein kann, je nachdem, was sonst noch vor sich geht.

Unter Windows ist die beste Lösung, den Betriebsmodus der GPU von WDDM auf TCC umzustellen, was über den nvidia-smi möglich ist Befehl, aber es wird nur auf Tesla-GPUs und bestimmten Mitgliedern der Quadro-GPU-Familie unterstützt – d. h. nicht auf GeForce. (Es hat auch den Nebeneffekt, dass das Gerät nicht als Windows-beschleunigter Anzeigeadapter verwendet werden kann, was für ein Quadro-Gerät oder einige bestimmte ältere Fermi-Tesla-GPUs relevant sein könnte.)

AFAIK gibt es keine offiziell dokumentierte Methode, um den WDDM-Batching-Prozess im Treiber zu umgehen oder zu beeinflussen, aber inoffiziell habe ich gehört, dass laut [email protected] in diesem Link der Befehl, der nach dem Cuda-Kernel-Aufruf ausgegeben werden soll, cudaEventQuery(0); was dazu führen kann/sollte, dass die WDDM-Batch-Warteschlange auf die GPU „gespült“ wird.

Wie Greg betont, wird die umfassende Nutzung dieses Mechanismus den Amortisationsvorteil zunichte machen und kann mehr schaden als nützen.

BEARBEITEN: Mit Blick auf 2016 wäre eine neuere Empfehlung für ein „Low-Impact“-Flush der WDDM-Befehlswarteschlange cudaStreamQuery(stream);

EDIT2: Wenn Sie aktuelle Treiber unter Windows verwenden, sollten Sie in der Lage sein, GPUs der Titan-Familie in den TCC-Modus zu versetzen, vorausgesetzt, Sie haben eine andere GPU für die primäre Anzeige eingerichtet. Die nvidia-smi Mit dem Tool können Sie den Modus wechseln (mit nvidia-smi --help für weitere Informationen).

Zusätzliche Informationen über das TCC-Treibermodell finden Sie im Windows-Installationshandbuch, einschließlich der Tatsache, dass es die Latenz von Kernel-Starts verringern kann.

Die Aussage zur TCC-Unterstützung ist allgemein gehalten. Nicht alle Quadro-GPUs werden unterstützt. Die letzte Determinante für die Unterstützung von TCC (oder nicht) auf einer bestimmten GPU ist nvidia-smi Werkzeug. Nichts hier sollte als Garantie für die Unterstützung von TCC auf Ihrer speziellen GPU ausgelegt werden.


Linux
  1. .bash_profile nicht bezogen, wenn Su ausgeführt wird?

  2. Nachteil bei der Verwendung eines Chroot im High Performance Computing?

  3. Kodierung einer Zip-Datei?

  4. Datei kann nicht gelöscht werden, auch wenn sie als Root ausgeführt wird?

  5. Automatisieren des ausgeführten Befehls unter Linux von Windows mit PuTTY

Bringen Sie podman unter Windows mit Linux zum Laufen

PHP-Skript - erkennen, ob es unter Linux oder Windows läuft?

Wie kann ich einen Cron-Job anzeigen, der gerade ausgeführt wird?

Laufendes Linux innerhalb von Windows XP, dh kein duales Booten

Virtuelles Linux mit qemu unter Windows ausführen

Was sind diese Windows-Prozesse unter Linux?