Sind die korrekten Systemvoraussetzungen vorhanden,
können Sie einen Teil der Anwendungsverarbeitung auf eine vielseitig einsetzbare Grafikverarbeitungseinheit (GPU) auslagern. Durch die Aktivierung einer Systemeigenschaft werden geeignete Workloads
zwecks Verarbeitung von der CPU auf die GPU verschoben. Sie können auch eine Option in der Befehlszeile festlegen, die bewirkt, dass der JIT-Comiler (Just-in-time-Compiler) bestimmte Verarbeitungstasks an die GPU auslagert.
Informationen zu dieser Task
Einige Anwendungsverarbeitungstasks können vom Verarbeiten von Daten auf einer GPU anstatt auf einer CPU profitieren,
wenn die Workload eine ausreichende Größe aufweist, die den Aufwand für das Verschieben der Daten rechtfertigt. Wenn Sie genau feststellen können, wann eine GPU verwendet werden kann, können Sie Anwendungen entwickeln,
die die verfügbaren Anwendungsprogrammierschnittstellen (APIs) zum Auslagern bestimmter Tasks verwenden. Als Alternative können Sie die virtuelle Maschine (Virtual Machine, VM)
diese Entscheidung automatisch treffen lassen,
indem Sie eine Systemeigenschaft in der Befehlszeile festlegen. Der JIT-Compiler kann ebenfalls bestimmte Verarbeitungstasks auf der Basis heuristischer Verfahren für die Leistung auslagern.
Vorgehensweise
- Nur Linux® : Setzen Sie
LD_LIBRARY_PATH
so, dass auf die CUDA-Bibliothek verwiesen wird. Beispiel: export LD_LIBRARY_PATH=<CUDA_LIBRARY_PATH>:$LD_LIBRARY_PATH
, wobei die Variable <CUDA_LIBRARY_PATH>
der vollständige Pfad zur CUDA-Bibliothek ist. Für CUDA 7.5lautet die Variable <CUDA_LIBRARY_PATH>
/usr/local/cuda-7.5/lib64
, was davon ausgeht, dass CUDA im Standardverzeichnis installiert ist.
Hinweis : Wenn Sie eine auf Just-In-Time Compiler (JIT) basierende GPU-Unterstützung verwenden, müssen Sie auch einen Pfad zur NVIDIA Virtual Machine (NVVM)-Bibliothek angeben. Die Variable
<CUDA_LIBRARY_PATH>
ist beispielsweise
/usr/local/cuda-7.5/lib64:<NVVM_LIBRARY_PATH>
.
- Auf Linux x86-64 -Systemen ist die Variable
<NVVM_LIBRARY_PATH>
/usr/local/cuda-7.5/nvvm/lib64
.
- Auf IBM® Power ® 8-Systemen lautet die Variable
<NVVM_LIBRARY_PATH>
/usr/local/cuda-7.5/nvvm/lib
.
Bei diesen Pfaden wird vorausgesetzt, dass die NVVM-Bibliothek im Standardverzeichnis installiert ist.
- Nur Windows: Legen Sie für
PATH
fest, dass die CUDA-Bibliothek eingeschlossen wird. Öffnen Sie das Symbol System in der Systemsteuerung. Klicken Sie auf Erweiterte Systemeinstellungenund anschließend auf Umgebungsvariablen. Wählen Sie die Variable PATH aus und klicken Sie auf Bearbeiten. Hängen Sie folgende Zeichenfolge an das Feld Variablenwertan: <CUDA_LIBRARY_PATH>
, wobei die Variable <CUDA_LIBRARY_PATH>
der vollständige Pfad zur CUDA-Bibliothek ist. Stellen Sie sicher, dass mehrere PATH
-Werte durch ein ;
getrennt sind.Die Variable <CUDA_LIBRARY_PATH>
ist C:\Program Files\NVIDIA
GPU Computing Toolkit\CUDA\v7.5\bin
. Dabei wird davon ausgegangen, dass CUDA im Standardverzeichnis installiert ist.
Sie können diese Umgebungsvariable auch direkt in der Befehlszeile mit dem folgenden Befehl festlegen: set PATH=<CUDA_LIBRARY_PATH>;%PATH%
Hinweis : Wenn Sie auf Just-In-Time Compiler (JIT) basierende GPU-Unterstützung verwenden, müssen Sie auch Pfade zur NVIDIA Virtual Machine (NVVM)-Bibliothek und zur NVDIA Management Library (NVML) angeben. Die Variable <CUDA_LIBRARY_PATH>
ist beispielsweise C:\Program Files\NVIDIA GPU
Computing Toolkit\CUDA\v7.5\bin;<NVVM_LIBRARY_PATH>;<NVML_LIBRARY_PATH>
. Wenn die NVVM-Bibliothek im Standardverzeichnis installiert ist, lautet die Variable <NVVM_LIBRARY_PATH>
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\nvvm\bin
. Sie finden die NVML-Bibliothek im Verzeichnis Ihrer NVIDIA-Treiber. Die Standardposition dieses Verzeichnisses ist C:\Program Files\NVIDIA Corporation\NVSMI
.
- Soll die VM entscheiden, wann geeignete Workloads auf die GPU verschoben werden sollen,
führen Sie die folgenden Schritte aus:
- Legen Sie die Systemeigenschaften -Dcom.ibm.gpu.enable in der Befehlszeile fest, wenn Sie Ihre Anwendung ausführen.
- Optional: Wenn auf Ihrem System mehrere GPUs installiert sind und Ihre Anwendung eine bestimmte GPU als Ziel haben soll, können Sie die CUDA-Umgebungsvariable CUDA_VISIBLE_DEVICESfestlegen.
Wird beispielsweise CUDA_VISIBLE_DEVICES=1 angegeben, führt dies dazu, dass nur die NVIDIA-Einheitenkennung 1 für die Anwendung sichtbar ist.
- Legen Sie beim Starten Ihrer Anwendung die folgende Option fest, damit der JIT-Compiler die Verarbeitung auf eine GPU auslagern kann: -Xjit:enableGPU.
Ergebnisse
Ist die Systemeigenschaft -Dcom.ibm.gpu.enable ordnungsgemäß festgelegt,
werden die in der Systemeigenschaft angegebenen Verarbeitungstasks automatisch auf die GPU ausgelagert,
wenn der Worlkload eine Mindestgröße aufweist.
Wurde die Option -Xjit:enableGPU festgelegt,
verwendet der JIT-Compiler heuristische Verfahren für die Leistung,
um festzulegen, welche Workloads für die Verarbeitung an die GPU gesendet werden sollen.
Wenn Probleme auftreten, lesen Sie den Abschnitt GPU-Problembestimmung (nurLinux, Windows).