PR
CodePlay Software社Technical MarketingのScott McKenzie氏
CodePlay Software社Technical MarketingのScott McKenzie氏
[画像のクリックで拡大表示]

 2008年9月11日に開催された「英国モバイル・ワイヤレス・テクノロジー セミナー」のために来日した英CodePlay Software Ltd. Technical MarketingのScott McKenzie氏が本誌記者のインタビューに応じた。CodePlay社の主要技術「Sieve」は,ソフトウエアの並列化技術である。C/C++プログラムに「sieve」というタグを付けると,指定した範囲で処理の依存性などを検証し,並列化できる場合はコードを生成し,できない場合は警告を出す。完全に自動化するのではなく,依存性の検証を自動化することによって,全体の工数を下げるというのが目的である。

――まず,Sieveの概要について教えて欲しい。
McKenzie氏 Sieveはマルチコアに対応するためのツールだ。マルチコア環境では,今まで通りのシーケンシャルなプログラム作りをしていると性能が頭打ちになる。しかし,並列処理を記述するのは難しい。そこで,ソフトウエアの作り方は今まで通りで,ツールを使って並列処理を実装できるようにするのがSieveだ。

――しかし,ツールがあるからといって魔法のように並列化できるわけではない。
McKenzie氏 その通りだ。具体的に説明しよう。並列化したい部分をマークアップする。「sieve」というタグを付けて,その範囲を括弧({})で囲む。このブロックの処理に順序依存性がなければ並列化し,依存性があれば警告を出す。

 つまり,ツールを使って全自動で並列化するという手法を採っていない。並列化できる部分をセクションごとに分けていき,逐次囲い込んでいく。sieveは並列化できる部分をふるい分けていくという意味で名付けられた。

――そうすると結局,データ並列性が高いものだけ,ということになるのでは。
McKenzie氏 いや,そんなことはない。Sieveは例えば,プロセサのアーキテクチャに合わせたコード生成が可能だ。データ並列性の高いものだけだと,例えばグラフィックス処理プロセサ(GPU)のような超並列型のものにしか使えないが,Sieveはヘテロジニアスなマルチプロセサでも有効だ。

 他にも並列プログラミング環境はあるが,プログラマが明示的に並列化できることを保証しなければならない。単に並列化しやすい部分だけを並列化しても,あまり効果は得られない。Sieveではプログラマに依存性の解消を促すことで,より多くの効果を得られるようにしている。

 また他の並列プログラミング環境では,データ構造を変えなければならないことが多い。Sieveはデータ構造をを変えることなく並列化できる点がポイントだ。