Anwendungsverarbeitung auf einer Grafikverarbeitungseinheit aktivieren (nurLinux, Windows)

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.

Vorbereitende Schritte

Überprüfen Sie, ob das System die erforderlichen Hardware- und Softwarevoraussetzungen erfüllt. Weitere Informationen finden Sie unter GPU system requirements (Linux, nur Windows).

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

  1. 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.
  2. 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.
  3. Soll die VM entscheiden, wann geeignete Workloads auf die GPU verschoben werden sollen, führen Sie die folgenden Schritte aus:
    1. Legen Sie die Systemeigenschaften -Dcom.ibm.gpu.enable in der Befehlszeile fest, wenn Sie Ihre Anwendung ausführen.
      Diese Eigenschaft kann für bestimmte Verarbeitungsfunktionen (beispielsweise sort) festgelegt werden. Weitere Informationen finden Sie unter -Dcom.ibm.gpu.enable (nurLinux, Windows).
    2. 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.
      Weitere Informationen zu dieser Variablen finden Sie unter "CUDA-Umgebungsvariablen" auf der Website NVIDIA.
  4. 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).