Verwendung einer GPU durch den JIT-Compiler (nur Linux, Windows)

Sie können den JIT-Compiler (Just-in-time-Compiler) für das Auslagern bestimmter Verarbeitungstasks auf eine vielseitig einsetzbare Grafikverarbeitungseinheit (GPU) aktivieren. Der JIT-Compiler ermittelt, wann diese Tasks auf der Basis von heuristischen Verfahren für die Leistung ausgelagert werden sollen.

Eine Schleife parallel().forEach führt durch Verwendung unterschiedlicher Threads einen Codeabschnitt mehrere Male parallel aus. Diese Art der parallelen Verarbeitung ist für die Verarbeitung auf einer Grafikverarbeitungseinheit (GPU) geeignet, die über Tausende von Kernen verfügt, die gleichzeitig dieselbe Anweisung ausführen können. Da jedoch das Verschieben von Daten zwischen der CPU und der GPU mit Aufwand verbunden ist, lagert der JIT-Compiler die Verarbeitung nur dann aus, wenn bestimmte heuristische Verfahren für die Leistung einen solchen Aufwand rechtfertigen.

Wenn diese Option aktiviert ist, versucht der JIT-Compiler, die folgenden Java™ -Konstrukte zu beschleunigen, indem er den entsprechenden Lambda-Ausdruck auf der GPU startet:
IntStream.range(<range>).parallel().forEach(<lambda>)
IntStream.rangeClosed(<range>).parallel().forEach(<lambda>)
Dabei gilt:
  • <range> definiert Ober-und Untergrenzen.
  • <lambda> ist ein korrekt definierter Lambda-Ausdruck.
Diese JIT-Optimierung bearbeitet die folgenden Konstrukte innerhalb des Lambdaausdrucks:
Typen
Variablen und eindimensionale Arrays aller primitiven Java-Typen.
Speicher
Automatische Variablen, Parametervariablen und Instanzvariablen. Statische Variablen werden nicht unterstützt.
Operationen
Alle Java-Operatoren außer instanceof.
Anweisungen und Ausdrücke
Alle Java-Anweisungen und -Ausdrücke mit Ausnahme von new, throwund Methodenaufrufen.
Java-Ausnahmebedingungen
Alle Standard-Java-Ausnahmebedingungen, einschließlich NullPointerException, ArrayIndexOutOfBoundsExceptionund ArithmeticException.
Die folgenden Operationen werden nicht unterstützt:
  • Methodenaufrufe.
  • Temporäre Operationen wie map oder filter.
  • Benutzerausnahmebedingungen.
Hinweis: Einige Aufrufe werden vom JIT-Compiler integriert.

Sie können die JIT-Verarbeitung aktivieren, indem Sie beim Starten der Anwendung die Option -Xjit:enableGPU in der Befehlszeile festlegen. Weitere Informationen finden Sie unter Anwendungsverarbeitung auf einer Grafikverarbeitungseinheit aktivieren (nurLinux, Windows).

Damit die Verarbeitung auf eine GPU ausgelagert werden kann, muss Ihr System die unter GPU-Systemvoraussetzungen (nurLinux, Windows)angegebenen Mindestvoraussetzungen erfüllen. Wenn Probleme auftreten, lesen Sie den Abschnitt GPU-Fehlerbestimmung (Linux, nur Windows).