Come il compilatore JIT utilizza una GPU (Linux, solo Windows)

È possibile abilitare il compilatore JIT (Just - In - Time) per scaricare alcune attività di elaborazione su una GPU (graphics processing unit) generica. JIT determina quando scaricare queste attività in base all'euristica delle prestazioni.

Un loop parallel().forEach esegue una sezione di codice più volte in parallelo utilizzando thread differenti. Questo tipo di attività di elaborazione parallela è adatto per l'elaborazione su una GPU, che ha migliaia di core che possono eseguire la stessa istruzione allo stesso tempo. Tuttavia, poiché c'è un sovraccarico nello spostamento dei dati tra la CPU e la GPU, JIT scarica l'elaborazione solo quando vengono soddisfatte determinate euristiche delle prestazioni.

Quando si attiva questa opzione, il compilatore JIT tenta di accelerare i seguenti costrutti Java™ avviando l'espressione lambda corrispondente sulla GPU:
IntStream.range(<range>).parallel().forEach(<lambda>)
IntStream.rangeClosed(<range>).parallel().forEach(<lambda>)
dove:
  • <range> definisce i limiti superiore e inferiore.
  • <lambda> è un'espressione lambda definita correttamente.
Questa ottimizzazione JIT gestisce le seguenti strutture all'interno dell'espressione lambda:
Tipi
Variabili e array unidimensionali di tutti i tipi primitivi Java.
Archiviazione
Automatico, parametri e variabili di istanza. Le variabili statici non sono supportate.
Operazioni
Tutti gli operatori Java tranne instanceof.
Istruzioni ed espressioni
Tutte le espressioni e le istruzioni Java tranne new, throwe le chiamate del metodo.
Eccezioni Java
Tutte le eccezioni Java standard, che includono NullPointerException, ArrayIndexOutOfBoundsExceptione ArithmeticException.
Le seguenti operazioni non sono supportate:
  • Richiami del metodo.
  • Operazioni intermedie come map o filter.
  • Eccezioni utente.
Nota: alcune chiamate sono allineate dal compilatore JIT

Puoi abilitare l'elaborazione GPU impostando l'opzione -Xjit:enableGPU sulla riga di comando quando avvii la tua applicazione. Per ulteriori informazioni, consultare Abilitazione dell'elaborazione delle applicazioni su un'unità di elaborazione grafica (Linux, solo Windows).

Per scaricare l'elaborazione su una GPU, il sistema deve soddisfare i requisiti minimi specificati in Requisiti di sistema GPU (Linux, solo Windows). Se si verificano dei problemi, vedi Determinazione dei problemi GPU (Linux, solo Windows).