インテル、JavaScriptに並列処理機能を追加する「River Trail」プロジェクトを初披露。IDF 2011
「JavaScriptはこれまでほとんどの場合、クライアント側でシーケンシャルな処理をしてきた」と語るのは、インテルのイベント「IDF 2011」に登場したJavaScriptの生みの親、モジラのCTO Brendan Eich氏。
そのEich氏に前に、JavaScriptに並列処理機能を追加する「River Trail」をインテルラボのディレクター兼CTOのJustin Rattner氏が初めて披露しました。
JavaScriptでマルチコアを活用する「River Trail」
River Trailは、「データ並列」な処理を実現するためのJavaScriptの拡張。
デモンストレーションでは、物理シミュレーションとして宇宙空間でお互いに影響し合う星の振る舞いを表示していました。多体問題をJavaScriptによってリアルタイムに解きながら、WebGLを用いてその状態を動画として表示するプログラムです。
通常のJavaScriptでの処理は、3fps程度の処理速度。
それが、River Trailを利用することでプロセッサが持つ複数のコアを活用できるようになり、45fpsへと15倍もの高速化を実現しています。
インテルによると、River Trailは非常にシンプルな形でJavaScriptに並列性を拡張しており、プログラマは容易に並列性を備えたプログラミングが書けるということです。
また、インテルにはRiver Trailの標準化に向けた意向があり、Eich氏もJavaScriptの標準化団体であるECMAでそれを後押しすると発言しています。
River TrailはオープンソースとしてGithubで公開されており、Firefoxのエクステンションとして利用可能になっています。
並列処理用の配列と関数を用意、OpenCLで実行
InfoQとPC Watchの記事では、少し技術的な説明が加わっているので、ポイントを引用したいと思います。
「InfoQ: JavaScriptに並列処理機能を追加する、IntelのJavaScript拡張機能が明らかに」から引用。
River TrailはJavaScriptにParallelArray型を追加する。これは並列配列データを保持した読み取り専用のデータ構造で、コンストラクタやParallelArrayのプロパティメソッドの一つを呼び出した際に作られる。(略)combineやfilter、map、reduceといった関数を使うことができ、それらは並列に動作する。それらに渡されたJavaScript関数はOpenCLにコンパイルされる。
並列処理用の配列が用意され、それを処理する関数が提供されることが分かります。
「【IDF 2011レポート】 Justin Rattner氏キーノートスピーチ - PC Watch」から引用。
IDF会場での研究員の説明によると、いったんコードをOpenCLの中間言語に落とし込むと言う。そのため、下層のハードウェアがOpenCLランタイムをサポートする限り、スケールアップできる。IDFでのデモでは、IntelのOpenCL SDKを使い、CPUコアのSSE/AVX命令セットを使っていた。
InfoQの説明と合わせると、並列処理用の配列を処理する関数が、OpenCLのレベルで実行されることで並列性を実現するようです。
あわせて読みたい
連載マンガ:Mr. Admin「ITにおける企業内格差」
≪前の記事
日本のクラウドベンダに聞く、グローバルなクラウドベンダとどう戦っていくのか? ~ クラウドごった煮#4 パネルディスカッション(後編)