Intel of Canadaでデベロッパ・プロダクツ・ディビジョン,パフォーマンス&プロダクティビティ・ライブラリーズのソフトウエア・アーキテクトを勤めるMichael McCool氏が,来日して日経ソフトウエアの取材に応じた。氏は米Intelが2009年8月に買収した加RapidMindでチーフ・サイエンティストを勤めてきた人物で,University of Waterlooで教壇にも立っている。Intelが2010年に投入予定の並列プログラミング製品「Ct」について,その意義を語った。
(聞き手は原田 英生=日経ソフトウエア


写真●Intel of CanadaのMichael McCoolソフトウエア・アーキテクト

並列プログラミング(パラレル・プログラミング)は難しい。

 並列プログラミングの難しさには,本当のことと,間違ったことがある。本当の難しさは,効果的なアルゴリズムの選択だ。メモリーの内容が壊れてしまうとか,制御フローを組むのが難しいといった部分は,本質的なものではなくて,これらのいくつかは修理(fix)できるし,またすべきだと思う。Ctによって開発者のタスクを可能な限りシンプルにしたい。

Ctがその解決策になるのか。

 並列化にはデータ・パラレルとタスク・パラレルがあるが,Ctはデータ・パラレルの基盤となるものだ。Ctは,コンピュテーショナル・ワークロードを並列化して,大きな問題をハイスループットで処理するのに適する。小さなデータのトランザクションを並列化するためのものではない。タスク・パラレルについては,Intelが開発してオープンソース化した「Threading Building Blocks(TBB)」が効果的なソリューションだ。CtとTBBの組み合わせは非常に強力だ。

Ctとは何なのか。

 Ctはプログラミング・モデル,インタフェース,API(Application Programming Interface),抽象マシン(仮想マシン)という四つのコンポーネントで構成される。最初にターゲットとしている言語はC++で,テンプレートなどを利用した拡張構文を使って開発者がプログラムを書く。コンパイルして動作させれば完成だ。Ctの仮想マシンがプロセサの持っている機能に合わせて,最適なベクター処理,スカラー処理をしてくれるので,最新CPUの恩恵を享受できる。C++コンパイラはIntelのものでもいいし,米MicrosoftのVisual C++,オープンソースのGCC(the GNU Compiler Collection)のものでもよい。Ctはプログラミング言語やオペレーティング・システムからは独立している。Ctは現在ベータ版の段階で,2010年の正式リリースに向けて開発が進んでいる。

Intelのコンパイラだけでは不十分か。

 IntelのC++コンパイラはスタティックな意味では最高の最適化をする。Ctがもたらすのは,ダイナミックなコンパイルだ。CPUが持つ拡張命令,コア数,キャッシュなどに応じて,ベストな動的コンパイルをする。それを行う仮想マシンがあるのだ。

Javaや.NET Frameworkの仮想マシンとどう違うのか。

 Ctの仮想マシンはパフォーマンス・オリエンテッドだ。仮想マシンという技法はいろいろなところで使われており,パフォーマンスの改善にも利用できる。シンプルな手順で,実際に速く動く。それがCtのポイントだ。