2010-06-30 34 views
8

隨時糾正我,如果我的理解的任何部分是錯誤的。JIT編譯器可以在後臺的某些操作中使用GPU嗎?

我的理解是,GPU提供了正常CPU提供的指令子集,但執行速度要快得多。

我知道有一些方法可以將GPU循環用於非圖形目的,但它看起來像(理論上)Just In Time編譯的語言可以檢測到合適的GPU的存在並將一些工作卸載到GPU後臺無需更改代碼。

我的理解是否天真?這只是一個非常複雜的問題,而且還沒有完成呢?

+0

你的意思是與CLR或JVM一樣的JIT?通用字節碼?像R這樣的DSL? – Stringer 2010-07-01 00:23:43

+0

我在想CLR/JVM風格,但也對其他答案感興趣。 – Davy8 2010-07-01 17:39:35

回答

8

我的理解是,GPU提供的一個 正常CPU提供指令的 子集,但更快的執行它們 。

這絕對不是那麼簡單。 GPU主要針對SIMD /矢量處理進行量身定製。因此,儘管當前GPU的理論潛力遠遠優於CPU,但只有能從SIMD指令中受益的程序才能在GPU上高效執行。而且,當數據必須從CPU傳輸到GPU以在那裏處理時,性能當然會受到影響。

因此,爲了使JIT編譯器能夠高效地使用GPU,它必須能夠檢測可並行化的代碼,以便從SIMD指令中受益,然後必須確定是否由CPU傳輸數據到GPU的性能改進將超出。

+0

沒錯,我忘了很多GPU的速度來自於具有數百個(邏輯)內核的現代GPU的並行化。這確實減少了實用性,因爲爲此設置了很少的應用程序。 – Davy8 2010-06-30 14:57:49

0

有可能使用GPU(例如,CUDA或OpenCL啓用的)來加速JIT本身。寄存器分配和指令調度都可以有效地執行。

相關問題