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

2010年2月9日

モジラが、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が第一級のプログラミング言語の地位を固めることになるのではないでしょうか。

あわせて読みたい

JavaScript Web技術 Mozilla




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本