[[PageNavi(NavigationList)]] == ソフトウェア高速化の鍵は「並列化」:いま注目される並列化技術を知る == 従来は高級サーバーでしか採用されていなかったマルチCPU/マルチコアが、一般的なPCにも普及しつつある。このようなマルチCPU/マルチコア環境において、高速に動作するアプリケーションを開発するために注目されているのが「並列化」技術である。本記事では、この並列計算の基本的な考え方やそのメリット、利用できるライブラリなどについて紹介する。 '''[//sourceforge.jp/magazine/09/05/25/1031209 【特集】マルチスレッド/並列プログラミングの必携ツール「インテル Parallel Studio」徹底活用]'''''''''[http://sourceforge.jp/magazine/09/05/15/0930226 第1回:ソフトウェア高速化の鍵は「並列化」:いま注目される並列化技術を知る][http://sourceforge.jp/magazine/09/05/15/0938220 第2回:マルチコア時代の新開発ツール「インテル Parallel Studio」][http://sourceforge.jp/magazine/09/05/18/1135239 第3回:サンプルコードで知るParallel Studioの並列化機能][http://sourceforge.jp/magazine/09/05/22/0358216 第4回:並列アプリケーションを作ってみよう][//sourceforge.jp/magazine/09/05/25/0921234 第5回:インテル Parallel Studioを活用したソフトウェアの並列化:AACエンコーダを高速化する] ソフトウェアをより高速に動作せたい、というのはすべてのソフトウェア開発者にとって共通の悩みだろう。ユーザーにとって、高速なソフトウェアは作業効率が向上するだけでなくコスト削減にもつながる。そして、ソフトウェアを高速に動作させるための技術として現在注目を浴びているのが「並列化」である。 並列処理という概念自体は、さほど新しいものではない。スーパーコンピュータを用いたHPC(High-Performance Computing)の分野では、従来から高速化のために並列処理が利用されていた。スーパーコンピュータは並列処理を高速に実行する仕組みを備えており、これを利用することで大幅な高速化が期待できたからだ。 では、なぜ今になって並列化が注目されているのだろうか。その要因としてはCPUの処理能力向上ペースの鈍化と、それを補うためのマルチコア化が挙げられる。 CPUの動作クロックは1990年代後半から2000年代中頃にかけて急速に向上した。しかし、CPUの動作クロックが向上するほど消費電力や発熱量は多くなる傾向にあり、現在ではこれらが無視できない問題となっている。そこで現在CPUメーカー各社が行っているのが、コア数を増やすことによりCPUのパフォーマンスを高める試みである。 ==== マルチコアCPUでは並列化が有用に ==== かつてはマルチCPU/マルチコアCPUというと、ハイエンドPCやサーバーにしか搭載されないものであったが、現在ではインテルのメインストリーム向けCPUであるCore 2シリーズだけでなく、エントリ向けのCeleronまでもがデュアルコア化されている。さらにハイエンドクラスのPCはクアッドコアCPUを搭載するようになり、現在インテルのデスクトップ向け最上位CPUである「Core i7」シリーズでは、1CPUで4コア+Hyper-Threadingによる8スレッド同時実行が可能となっている。 IDCの調査によると、デスクトップPC/モバイルPC/PCサーバーの全分野において、2008年の時点でマルチコアCPUのシェアは80%以上とのことである。さらにそのシェアは2010年には100%になると予測されているそうだ('''図1''')。 [[Thumb(b958e8f3ad9bdd1ae9a203a852315a8a.png, caption=図1 出荷数ベースでのマルチコアCPUのシェアの変化とこれからの予測シェア(IDC Worldwide PC Semiconductor 2006-2011 Market forecastより))]] 複数の処理が並列して動作するマルチタスクOS環境では、CPUのマルチコア化によるパフォーマンス向上の恩恵を受けやすい。また並列化されたプログラムであれば、複数のCPUを効率的に利用することで処理速度の向上が期待できる。 これから90年代~2000年代初頭のように、CPUの処理能力が急激に上昇するということは考えにくい。一方でデュアルコア/クアッドコアといったマルチコアCPUの普及はますます進むと予想されている。つまり、これからCPUの能力を最大限に引き出そうとすると、並列処理は避けて通れない技術になっているのである。 [[PageNavi(NavigationList)]]