読者です 読者をやめる 読者になる 読者になる

FutureInsight.info

AI、ビッグデータ、ライフサイエンス、テクノロジービッグプレイヤーの動向、これからの働き方などの「未来」に注目して考察するブログです。

CUDAやLarrabeeに何を計算させるのか

GPUを用いてデータ処理を行うCUDAや、CPU自体がソフトウェアパイプラインを持つLarrabeeがそろそろ一般の人々にも登場しそう雰囲気になってきました。

簡単に説明するとCUDAはもともとグラフィックパイプライン用に最適化されたGPUを用いて、グラフィックだけではなくデータのストリーミング処理を行うフレームワークで、LarrabeeはCPU自体が強力なベクトル計算ユニットを持ってCPUだけでグラフィックのソフトウェアパイプラインを実現することを可能とするIntelの新しいCPUです。もちろん、これらの技術はエンジニアにとっては極めておもしろいものですし、特にゲームにおいては、グラフィックのみならずAIなどの計算に大活躍するとおもうのですが、さて、一般のPCでこれらの技術、CPUを用いて何を計算させようかというと何を計算させればいいのでしょうか。

そもそも最近はATOMのような低電力で動作するCPUに興味が出てきており、Core i7にもあまり興味がなかったのですが、有り余るCPUパワーを用いて可能そうなことを動画のエンコード以外で考えてみます。

Flashから3Dフレームワークとして利用

ちょっとあり得るかなと思っているのが、FlashにCUDAやLarrabeeの性能を使い切るフレームワークが登場してMGS4のようなレベルのゲームがブラウザ上で動くという形です。この場合、大量のテクスチャデータやモデルデータをどこに置くのかという疑問がありますが、最近テクスチャの自動生成のレベルがかなり上がってきてますので、この自動生成にも計算パワーを使ってしまうのが良いのではないかと思います。この場合、ビジネスモデルはどうするんだという疑問がありますが、Adobe辺りがiTunesみたいなことを始めればいいのではないでしょうか。

ファイルシステムレイヤーで圧縮、解凍を常に行うことでファイルアクセスを高速化

SSDが登場しなければ確実にこの用途がCUDAやLarrabeeの一般的な使い方になっていたと思います。つまりHDD側にはファイルを常に圧縮して保存しておき、アプリケーションがファイルを読み出す際はファイルシステムのレイヤーでストリーミングで解凍処理を行うことで、HDDのボトルネックであるファイルの読み出し速度を上げるという方法です。50%くらいファイルが圧縮されていれば、読み出し速度は単純に2倍になり、CUDAやLarrabeeを使えば解凍処理がボトルネックになることはないので、結果的にアプリからのファイルの読み出し速度が2倍になるという寸法です。しかし、SSDが登場して、HDDの10倍以上のスピードが現実的になってきたので、この技術が一般化することはゲーム以外の分野ではないかもしれませんね。

関数型言語で超富豪的プログラミング

昔はそんなこと万に一つもないかなと考えていたのですが、最近は結構真剣に関数型言語で記述して、VMが勝手に並列化ということが一般的になってくるのではないかと考え始めています。というのは、C#が歩みはおそいものの関数型言語の機能を着々と取り入れていますし、最近見つけたYpsilonの実装などは非常におもしろかったからです。

この場合、重要なのは如何に簡単にプログラミングを行えるかだと思うんですよね。そんなわけで、タスクの並列を如何に行えるかという部分に特価された他のことには全く目もくれない超富豪的なプログラミングを実現するフレームワークみたいなものが登場するのではないかと勝手に考えています。特にGoogle Gears的な形でJavaScriptに提供されるという線が怪しいですね。

まとめ

ちょっとつまらない考察になってしまいましたが、思いつくものを並べてみました。なかなか有用な利用方法が思いつきませんが、結局ブラウザが如何にCPUパワーを使えるようになるかという部分が肝なのではないかと考えています。