3. 並列プログラミング推進のための投資
Reinders氏は「我々はCtに注目しています。TBBやOpenMPといった並列化のためのツールは既にあり、それらは強力ですが、『並列化だけに特化したものはどうか』と調査をしたら決定論的にスケーリングするものが作れるということが分かりました。Ctのコードはデッドロックもないし、レースコンディションも起こらず、スケーリングできます」と、Ctを採用した新製品(名称未決定)のベータ版を今年末に公開予定だとした。
このCtテクノロジー・ベースの製品は、簡単なプログラミングでパフォーマンスを向上する生産性と、マルチコアからメニーコアまでスケールできるという特徴を持つ。標準C++コンパイラーには変更はなくTBBと同様に利用できるという。
さらにReinders氏はCtのシミュレーション結果を提示した。8コアのSSE4.2(bit幅162のインストラクション)ではおよそ8倍、8コアのAVX(bit幅256)では16倍のパフォーマンスと、コアを最大限に使い切ることができるとし、さらに、メニーコアCPU「Larrabee(ララビー)」(bit幅512)でも同じソースコードで再コンパイルすることなく起動する。「異なる構成でも完全にスケールし、デットロックやデータレースもないので、医学分野の画像処理や金融・地震などの分析など高度な処理を実現できると期待している」と、強い期待を語った。
最後にReinders氏は「この並列化の分野でトップリーダーとなっていきたい。他の会社にも並列化に取り組んでもらい、ともにこの分野を盛り上げたい」と、今後の展望についてのプレゼンテーションを終えた。
イベント参加者との質疑応答
プレゼンテーション後には参加者からReinders氏への質疑応答が応答が行われた。
質問1: 「Haskell」「F#」「Erlang」などの関数型プログラミングにフォーカスする予定はありますか?
回答: 関数型言語には期待していますし、個人的には好きです。ただ、CやC++で書かれたプログラムがあまりにもたくさんあります。これらと比較すると関数型言語は近い将来の主流になるとは想定しないので、インテルとしてはまずCやC++にフォーカスします。現在は、大学などと協力して行う研究の予算をつけている段階です。また関数型言語での並列化には、違ったマインドセットで望まなくてはならないと思います。
質問2: CtとOpenCLの両者に興味がありますが、どちらを選ぶべきでしょうか?
回答: OpenCLは興味深いので、もう少し人気が出てもよいと思います。ハードウェアのコントロールができるのが特徴ですが、パフォーマンスの保障がありません。Ctというのは高位レベルで、OpenCLは低位レベルであると思います。ハードウェア寄りのプログラムを考えるとOpenCLを採用し、アルゴリズム寄りではCtを採用すればよいと思います。もしかすると、Ctのプログラムにおいてハードウェアを制御する際にOpenCLを活用する可能性もあります。また、何らかの環境でOpenCLをコンパイルすることも可能になるのではないかと思います。
質問3: Ctをオープンソース化して普及する予定はありますか?
回答: 最終的にはさまざまなOS、プラットフォームで使っていきたいと思います。現状の予定ではC、C++のみですが、PythonやJava、C#にも展開していきたいと考えていますので、ぜひCtを使ってフィードバックしていただきたいと思います。
質問4: Linuxだけでなく、UNIXユーザーもいます。オープンソースOS用の製品をもっと開発してほしいです。
回答: オープンソース化による恩恵はTBBの公開で学びました。今後もそのような展開を検討していきたいと考えています。それがUNIX、Solaris、AIXなど、すべてのコミュニティの益になるからです。
質問5: インテルのCPUリソースを使う意味でCtを使うのは分かります。メニーコアを超えたインターノードの並列処理ではどうでしょう? 現在事実上のデファクトであるMPIは使いやすくありませんが、インテルとしてはどうお考えですか?
回答: 分散メモリマシンは、まだまだ課題があります。しかし、Ctはそれに対応する可能性があるので強く支持しているのです。MPIはよいとは言えませんが、現在ではベストなソリューションであり、今後まだまだ使われると思います。我々もMPIに今後も投資をしていき、ブロードキャストや同報コミュニケーションなどに使われていくでしょう。Ctも状況によってはMPIを使うことも考えています。シンプルな解決策はありませんが、まずはMPIに頼らずCtでやっていきたいと思います。