JIT 編譯器如何使用 GPU (僅限Linux、Windows)
您可以啟用 Just-In-Time (JIT) 編譯器,以將特定處理作業卸載至通用圖形處理裝置 (GPU)。 JIT 會根據效能啟發式來決定何時卸載這些作業。
parallel().forEach 迴圈會使用不同的執行緒,以平行方式多次執行程式碼區段。 這種類型的平行處理作業適合在 GPU 上進行處理,該 GPU 具有數千個核心,可同時執行相同的指示。 不過,因為在 CPU 與 GPU 之間移動資料有額外負擔, JIT 只在符合特定效能啟發式功能時才會卸載處理。
啟用時, JIT 編譯器會在 GPU 上啟動對應的 lambda 表示式,以嘗試加速下列 Java™ 建構:
IntStream.range(<range>).parallel().forEach(<lambda>)
IntStream.rangeClosed(<range>).parallel().forEach(<lambda>)哪裡(情況):<range>定義上界及下界。<lambda>是正確定義的 lambda 表示式。
這個 JIT 最佳化會處理 lambda 表示式內的下列建構:
- 類型
- 所有 Java 初始類型的變數和一維陣列。
- 儲存空間
- 自動、參數及實例變數。 不支援靜態變數。
- 作業
- 除
instanceof以外的所有 Java 運算子。 - 陳述式和表示式
- 除了
new、throw和方法呼叫之外的所有 Java 陳述式和表示式。 - Java 異常狀況
- 所有標準 Java 異常狀況,包括 NullPointerException、 ArrayIndexOutOfBoundsException和 ArithmeticException。
不支援下列作業:
- 方法呼叫。
map或filter之類的中間作業。- 使用者異常狀況。
附註: JIT 編譯器會列入某些呼叫
啟動應用程式時,您可以透過在指令行上設定 -Xjit:enableGPU 選項來啟用 GPU 處理。 如需相關資訊,請參閱 在圖形處理裝置上啟用應用程式處理 (僅限Linux、Windows)。
若要將處理卸載至 GPU ,您的系統必須符合 GPU 系統需求 (Linux,僅限 Windows)中指定的最低需求。 如果您遇到問題,請參閱 GPU 問題判斷 (Linux,僅限 Windows)。