インテルParallel Building Blocks
実際に並列化プログラムをコーディングする段階では、インテルが並列化技術を結集したテンプレートライブラリが利用でき、コンパイラ側で並列化を最適化してくれる。開発者は、並列化の煩わしさに手を取られることなく、実務ロジックに注力できる。
インテルParallel Studio 2011では、並列化モデルとして3つの選択肢が用意されている。これをインテルParallel Building Blocks(PBB)と総称する。
まず、PBBを代表する並列化モデルが、インテル・スレッディング・ビルディング・ブロック(TBB)だ。これは定義済みテンプレートライブラリで、プロセッサのコア数を認識させ、必要な数だけ並列化させるといった処理が利用できる。今回のリリースでTBB 3.0にバージョンアップした。
なお、TBBはインテルが提供するオープンソースプロダクトとして、ウェブサイト「Threading Building Blocks.org」から、ライブラリ単体でも入手でき、Visual Studio以外のC++開発環境でも利用できる。
あと2つの並列化モデルでは、2009年のインテルParallel Studioのリリース後にインテルが買収した企業の技術が活用されている。それぞれ、TBBより手軽な並列化と、より複雑な並列化という相反する方向を志向している。
インテルCilk Plus
インテルCilk Plus(シルクプラス)は、2009年7月に買収された米Cilk Artsの「Cilk++」がベースとなった製品だ。MIT(マサチューセッツ工科大学)で15年ほど前にスタートしたプロジェクトの流れを汲んでいる。
インテルCilk Plusの適用領域はTBBとほぼ同じだが、コンパイラ拡張としてより簡単に記述できることが特徴だ。インテルParallel Advisorによってアドバイスされた並列化ガイダンスがそれほど多くないなら、Cilk Plusで実現するほうがより簡単にできる。
インテルArray Building Blocks(ABB)
逆に、もっとコアが増えてきたり、先端的な科学技術計算や複雑な画像処理といった大量のデータを処理するプログラムの並列化については、インテルArray Building Blocks(ABB)で対応するのが最適である。
インテルArray Building Blocksは、インテルのCt(C/C++ for Throughput Computing)テクノロジーに、2009年8月に買収したRapidMind社の技術を取り込んだC++テンプレートライブラリだ。スケーラブルな配列化プログラミングが実現される。
まだベータ版だが、正式版の提供に向けて開発が進められている。
まとめ
インテルでは、まったくの初心者からハイエンドユーザーまで、また市販のPCからサーバーサイドでのHPC環境まで、幅広い並列化を実現するために複数の製品ラインナップを提供している。
そのなかで、インテルParallel Studioは、Windows環境のC/C++に提供される基本的な製品だ。デスクトップあるいはラップトップのPC単体で、マルチコア・プロセッサーの能力を活用したいアプリケーションであれば、ゲーム、マルチメディア、画像処理、金融などどんな分野でも適用されうる。また、並列化だけではなく、ひとつのコアに対する最適化の機能もあり、シリアルプログラミングでも力を発揮する。
このため、並列化が必須でない業界でもメリットは大きく、実際に利用企業も多種多様で、偏りなく広く活用されているという話だ。
ゼルダ氏は、インテルParallel Studioのプロモーションにおいて、まず日本を訪れ、それから北京(中国)、インドと回る予定だという。これら成長著しいアジア諸国と比べても、並列化の分野では「最も速く成長しているマーケットは日本だ」という。「驚くほどの成長であり、(インテルにとっても)ハッピーな状況だ」という。
このようなインテルParallel Studioの利用状況を踏まえて、ゼルダ氏は「並列プログラミングを行ってみたい、というプログラマーが、より簡単に並列化を実現できるよう、今後も引き続き機能を向上させていきたい」と語っている。