ラベル llvm の投稿を表示しています。 すべての投稿を表示
ラベル llvm の投稿を表示しています。 すべての投稿を表示

2015年3月10日火曜日

VulkanとSPIR-VとGPGPU

次期OpenGLとして予告されていたVulkanがGDC2015でついに発表されました。

噂されていたようにMantle, DirectX12と似た現代のGPUにあわせたCPUオーバーヘッドの小さい薄いAPIとなるのは予想通りだったのですが、プログラミング言語環境と実行フレームワークに少し度肝を抜かれました。

その肝はVulkanと同時に発表されたSPIR-Vです。
VulkanでもGPUでのプログラム実行には従来からのシェーダー言語であるGLSLの拡張版がつかわれますが、今回からは事前コンパイルしてバイナリ中間コード化して使えます。
このバイナリ中間コードにつかわれるのがSPIR-Vです。
実態はLLVM-IRの拡張型ですが、
LLVMと同じようにフロントエンド言語に様々なものが選べます。
GLSLシェーダー言語以外にもやはり時同じくして発表されたOpenCL2.1などにも対応しています。
SPIR-VのようなGPU実行フレームワークが策定されたことで今後GPGPUの普及が促進されることに超期待しています。

2014年8月8日金曜日

FTL llvm: javascriptをコンパイル?!

fourth tier llvm(FTL)なるものが開発中らしい。
chromeブラウザのV8 みたいにjavascriptを高速化する技術なんですが、これがappleのSafariに載るらしい。
safariもnitroとかいうjavascriptエンジンで既にかなり高速化しているんですが、FTLの何がスゴいってllvmでjavascriptをコンパイルしちゃうらしいんですよ!

ここまで聞いて詳しい方なら、「ああ、あれね、 llvmとjavascriptね。ecmascriptenとかasm.jsでやってるやつね。」といわれるかもしれませんが、

違う!違うんです!

ecmascriptenはC言語からjavascriptに変換。
FTLはjavascriptからネイティブコードに変換。

なんです!

XXX言語(のllvm中間言語)からネイティブコードに変換はllvm様のバックエンドの力を持ってすれば造作もないことなのはわかりますが、javascriptのような型の無い いい加減な、否、柔軟な動的言語をllvm中間言語の変換するとは!!フロントエンドで一体どんな革命が起きたのか!

答えはこちら!
FTL: WebKit's LLVM based JIT

...難しくてわからんがな。易しく教えて偉い人。

なんにしてもllvmプロジェクトにとっても動的言語への対応は挑戦的なことみたいですね。

カリカリに高速化されている現状からさらにこんな高速化って凄まじいなぁおい。

今秋リリースのiOS8にも載るとか載らないとか。早~く来い来いiPhone6~♪