JavaScriptをGPUで高速化する試み、モジラがJetpackで検討中

2010年2月 9日はてなブックマーク del.icio.us Twitter
タグ : JavaScript , Mozilla

モジラが、JavaScriptをGPUのパワーを借りて高速化する試みを行っています。FirefoxのJetpackプロジェクトに協力しているメンバーがブログにポストしたエントリ「Elevating JavaScript Performance Through GPU Power」で、その可能性と方法について触れています。また1つ、JavaScriptの可能性が広がるかもしれません。

Mozilla Labs » jetpack » Blog Archive » Elevating JavaScript Performance Through GPU Power

Webでは高精細な動画や音声などがやり取りされるようになり、またセカンドライフのような3次元表示など、Webブラウザ上で行われる情報処理は高度化しています。

今後はさらに動画の加工や音声認識のような高度なアプリケーション、あるいはWebブラウザで大量のデータを表示、分析するようなアプリケーションなども期待されるでしょう。

こうしたWebブラウザでの高度な処理要求に応えるため、NVIDIAが推進するGPUを用いた並列処理アーキテクチャのCUDAをJavaScriptから利用する方法について検討しているとのことです。

APIを拡張する方法、シンタックスを拡張する方法

エントリでは、JavaScriptを拡張する方法として、APIを拡張する方法と、JavaScriptのシンタックスを拡張する方法の2つが提案されています。

その仕組みについてはうまく説明できる自信がないので、いくつかの方法とサンプルコードを引用して、どのような提案が行われているのかを紹介します。以下は大規模ループのような処理をGPUにまかせる際の手続きについてのサンプルです。

Jetpack.toGPU()を用いてGPUへの処理を明示する

var resNumbers = Jetpack.toGPU( function(nums, numsSize) {  
var sqrFun = function(v) { return  v * v; }  
  for (var i  = 0; i < size; ++i)  
    numbers[i] = sqrFun(numbers[i]);  
  }, numbers,  size);  

// some job here

関数型言語を導入する

var sqrFun = function(v) { return  v * v; }
map(sqrFun, numbers);

マイクロソフトのLINQの技術を応用する

var resNumbers = Jetpack.Linq.toGPU().from(numbers).map(sqrFun);

jQueryを応用する

$("div.test"). add("p.quote").addClass("blue").
slideDown("slow").toGPU();

マルチコアのCPUが一般的になり、GPUもiPhoneなどモバイルを含むほとんどのデバイスに搭載され、またクラウドの登場によって分散処理も一般的になってきた現在、JavaScriptだけでなくあらゆるプログラミング言語で並列処理を効率的に記述し、実行する方法が模索されています。

いまのところ、普通にプログラミングをすればコンパイラやインタプリタがそれを自動的に最適な並列処理へと展開してくれる、という理想的なシステムはどの処理系でもまだありません。ここで提案されているように開発者はコードのどこが並列処理をするべき部分なのか考えつつ組み込んでいく必要があります。

それは開発者にとってはまた頭を悩ませる課題が1つ増えたことを意味するのかもしれませんが、一方でまた1つソフトウェアの可能性を広げるものでもあると思います。そしてJavaScriptで並列処理やGPUの能力を引き出せるようになれば、さらにJavaScriptが第一級のプログラミング言語の地位を固めることになるのではないでしょうか。


次の記事≫ サーバは「単体」から「群体」へと進化中
前の記事≪ アイルランド政府はクラウド利用を警告、米空軍は軍用クラウドの設計発注へ

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
RSSリーダーで : Feed
≫ 過去の記事を読む




人気エントリ - はてなブックマーク

アーカイブ  (最新記事10)

バックナンバー

2010年3月
2010年2月
2010年1月
2009年12月
2009年11月
2009年10月
2009年9月
2009年8月
2009年7月
2009年6月
2009年5月
2009年4月
2009年3月
2009年2月

Trackbacks (TrackbackURL:http://www.publickey.jp/mt/mt-tb.cgi/496)

  • (トラックバックは承認後に掲載されます)

Comments