== マルチスレッド/並列プログラミングの必携ツール「インテル Parallel Studio」徹底活用 ==
Intel Core 2シリーズの登場以来、一般的なPCにおいてもマルチコアCPUが普及しつつある。それとともに注目を浴びつつあるのが、プログラムの並列化/マルチスレッド化だ。そんな中、インテルから、並列プログラミングを強力にサポートする開発ツール「インテル Parallel Studio」(以下、Parallel Studio)が登場した。
Parallel Studioは自動並列化/最適化機能を備えた「インテル コンパイラー」やデバッガを含む「インテル Parallel Composer」と、プログラムのパフォーマンスを測定するマルチスレッド対応プロファイラ「インテル Parallel Amplifier」、メモリエラーやマルチスレッドプログラムにおけるスレッド間のデータ競合などを検出する「インテル Parallel Inspector」で構成される、新たな開発ツールである。また、今後この製品に並列化の実装に関するコーチング機能を持った「インテル Parallel Advisor」も追加される予定だ。
将来的にはすべてのPCがマルチコアCPUを搭載すると目されている現在、パフォーマンスが求められるソフトウェアは並列化が求められることになる。そこで、本特集ではC/C++プログラムの並列化に関する基礎知識を紹介するとともに、プログラムの並列化例やParallel Studioを活用した高速化といったトピックを紹介する。
{{{ html
<div class="lead">
}}}
=== [ソフトウェア高速化の鍵は「並列化」:いま注目される並列化技術を知る_p1 ソフトウェア高速化の鍵は「並列化」:いま注目される並列化技術を知る]
[[Embed(b449076af9fac911ff9d5dd089041dfd.png, float=right)]]
従来は高級サーバーでしか採用されていなかったマルチCPU/マルチコアが、一般的なPCにも普及しつつある。このようなマルチCPU/マルチコア環境において、高速に動作するアプリケーションを開発するために注目されているのが「並列化」技術である。本記事では、この並列計算の基本的な考え方やそのメリット、利用できるライブラリなどについて紹介する。
=== [マルチコア時代の新開発ツール「インテル_Parallel_Studio」_p1 マルチコア時代の新開発ツール「インテル Parallel Studio」]
[[Thumb(67c5132f1600e1929f88df6501af97bf.png, float=right)]]
インテルが新しい開発ツール「インテル Parallel Studio」を発表した。Parallel StudioはマルチコアCPUで高いパフォーマンスを発揮するソフトウェアを開発するためのツールで、並列化機能および強力な最適化機能を備えたコンパイラや並列化関連ライブラリ、デバッガ、プロファイラから構成されている。本記事では、このParallel Studioの機能や特徴を紹介する。
=== [サンプルコードで知るインテル_Parallel_Studioの並列化機能_p1 サンプルコードで知るインテル Parallel Studioの並列化機能]
[[Thumb(f5165db65a4aa05c5033febccd3b6f0f.png, float=right)]]
「インテル Parallel Studio」はマルチスレッドやOpenMPなどを使用した、並列処理を行うプログラムの開発を支援するツールである。本記事では、Parallel Studioに含まれる並列化機能や強力な最適化機能、並列化関連ライブラリ、デバッガ、プロファイラといった機能や、使い方の例などを紹介していく。
=== [並列アプリケーションを作ってみよう_p1 並列アプリケーションを作ってみよう]
[[Thumb(7085e1c160d55145b9f68dd599651e14.png, float=right)]]
インテルのCoreシリーズCPUが登場して以来、マルチコアCPUは爆発的に普及している。現在では比較的低価格なCPUでも複数のコアを搭載するようになり、現在販売されているPCのほとんどはマルチコアに対応しているといっても過言ではない。しかし、まだマルチコアCPUの性能を生かす、並列処理を行っているアプリケーションは多くない。本記事では、このような技術を利用した並列処理の実装方法を、簡単な画像処理アプリケーションを例に説明していく。
=== [インテル_Parallel_Studioを活用したソフトウェアの並列化:AACエンコーダを高速化する_p1 インテル Parallel Studioを活用したソフトウェアの並列化:AACエンコーダを高速化する]
[[Thumb(0bfd66f200c4106ccdb85ce137dffab2.png, float=right)]]
処理の高速化が強く求められている分野の1つに、画像処理や音声処理、動画処理といったマルチメディア処理が挙げられる。これらのプログラムは処理すべきデータ量も多く、また行う処理も非常に複雑である。そのため、PCの処理速度が向上した現在でも「時間がかかる処理」の代表であり、このような処理にこそ並列化による処理速度の高速化が期待されている。本記事ではフリーの音声エンコーダ「FAAC」をインテルの並列プログラミング支援ツール「インテル Parallel Studio」を使って並列化し、その処理速度を高速化する試みを紹介する。
=== [オープンソース化された並列化テンプレートクラスライブラリ「Intel_Threading_Building_Blocks」入門_p1 オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門]
[[Thumb(d71bc3443c46cdafce23cd43aa9b0475.png, float=right)]]
C++で並列アプリケーションを実装するためのテンプレートライブラリとして、インテルがリリースしている「Intel Threading Building Blocks」(TBB)がある。TBBはインテル コンパイラーやインテル Parallel Studioといったインテルのコンパイラ製品に付属しているほか、オープンソース版も公開されている。本記事ではこのTBBの概要と、基本的な使い方を解説する。
{{{ html
</div>
}}}