アドバンスト並列化コンパイラ技術プロジェクトは3月20日,新たな並列化コンパイラ(APC)技術を発表した。APCは,1つのプログラムを複数プロセッサで並列処理できるように自動変換(または最適化)するための技術。ネットワーク上に分散したコンピュータ群で1つの仮想コンピュータを構成する「グリッド・コンピューティング」に向けて,重要な役割を担う。同プロジェクトが今回発表した新技術は,コンパイルしたプログラムの処理速度が,従来技術を使った場合に比べて,平均で3.5倍,最大で10倍程度にまで高まるという。

 一般に,並列処理に最適化されたプログラムを開発するには,エンジニアにそれなりのスキルが要求される。設計/開発時にさまざまなことを考慮しなければならないからだ。例えば,分割しやすいアルゴリズムを作る,複数プロセッサから利用するデータをメイン・メモリーではなく各プロセッサ上のキャッシュに格納する--などである。並列化コンパイラを使うと,こうした並列化プログラム開発の手間を軽減できる。プログラムの内容を解析して,効率的に並列処理できるように,プログラムを自動的に書き換えてくれる。

 今回開発した新技術に基づく並列化コンパイラは,人間が実施するのと同じようなきめ細かな最適化処理を自動的に実行する。例えば,プログラム内部から並列化可能な部分を階層的に抽出し,各プロセッサにできるだけ均等に演算処理を割り当てる。従来の技術では,ループなど特定の処理単位で並列化していたため,各プロセッサに割り当てる演算量がバラつきやすく,結果的にプロセッサの演算能力に空きができてしまうことがあった。新技術では,サブルーチンなどループ以外の構造を細かく識別し,大小さまざまな処理単位を作り出す。これにより,演算能力の無駄をなくし,処理を高速化する。ほかにも,データに対するアクセスが高速になるように,関連するデータは連続したメモリー領域に配置する,複数プロセッサで利用するデータはプロセッサごとのキャッシュに格納する--といった最適化も行う。プログラム内の分岐処理をあらかじめ予測し,分岐先をあらかじめ実行させるなども可能だ。

 こうした高速化の理論は,開発言語やプロセッサの種類に依存することなく適用できるという。現段階では,科学演算向けの開発言語であるFORTRUN77のコンパイラを実装済み。

 アドバンスト並列化コンパイラ技術プロジェクトは,官民共同研究開発プロジェクトである「IT21」の一部として2000年9月に結成された。新エネルギー・産業技術総合開発機構(NEDO)日本情報処理開発協会(JIPDEC)に委託して組織化したものである。JIPDECのほか,日立製作所富士通産業技術総合研究所早稲田大学などが参加し,開発と検証を行った。プロジェクト・リーダーは早稲田大学 理工学部 教授の笠原 博徳氏である。

 なお,開発の成果は今後,参加企業によって製品化される予定である。(H.J.)