• Showing Page History #39757
  • Showing Page History #49827

intel_banner.jpg

 HPC/並列プログラミングポータルでは、HPC(High Performance Computing)プログラミングや並列プログラミングに関する情報を集積・発信しています。

新着トピックス

注目キーワード/トピックス

インテル Parallel Studio

 Visual Studioを使用するC/C++開発者向けに設計された、並列化を実装するための包括的なツールセット。インテル Parallel Studioを使用することで、マルチコア・プラットフォームの利点を活用するアプリケーションを素早く開発できる。

 インテルが新しい開発ツール「インテル Parallel Studio」を発表した。Parallel StudioはマルチコアCPUで高いパフォーマンスを発揮するソフトウェアを開発するためのツールで、並列化機能および強力な最適化機能を備えたコンパイラや並列化関連ライブラリ、デバッガ、プロファイラから構成されている。本記事では、このParallel Studioの機能や特徴を紹介する。

 「インテル Parallel Studio」はマルチスレッドやOpenMPなどを使用した、並列処理を行うプログラムの開発を支援するツールである。本記事では、Parallel Studioに含まれる並列化機能や強力な最適化機能、並列化関連ライブラリ、デバッガ、プロファイラといった機能や、使い方の例などを紹介していく。

 プログラムの高速化が強く求められている分野の1つに、画像処理や音声処理、動画処理といったマルチメディア処理が挙げられる。これらのプログラムは処理すべきデータ量も多く、また行う処理も非常に複雑である。そのため、PCの処理速度が向上した現在でも「時間がかかる処理」の代表であり、このような処理にこそ並列化による処理速度の高速化が期待されている。本記事ではフリーの音声エンコーダ「FAAC」をインテルの並列プログラミング支援ツールParallel Studioを使って並列化し、その処理速度を高速化する試みを紹介する。

インテル コンパイラー

インテルが開発する、最新CPUに向けた最適化機能や自動的にコードをベクトル化/並列化する機能などを備えたコンパイラ。インテル コンパイラーでプログラムをコンパイルするだけでもパフォーマンスの向上が期待できる。Windows版/Linux版/Mac OS版のC++およびFortranコンパイラが提供されている。

 インテル コンパイラーは、CPUメーカーが開発しているということで、最新のCPUへ向けた最適化やそれらが備えるSSE 4.1といった命令セットへの対応、そして自動並列化機能など、パフォーマンスの高いバイナリコードを生成する機能を備えている。しかし、コンパイラを変えることで本当にパフォーマンスが変わるのか、またその違いはどの程度なのか気になる方も多いだろう。そこで本記事では工学分野などで使われる数値演算プログラムを例に、生成したコードのパフォーマンスを検証する。

 インテルが開発している「インテル コンパイラー」はOracleなどパフォーマンスを求めるベンダーで採用されているほか、科学計算用アプリケーション、3Dグラフィックソフトなど、さまざまなソフトウェアのコンパイルに利用されている。そこで、インテル コンパイラーでコンパイルされたバイナリをベンチマークテストし、実際どの程度の性能向上が見込まれるのかを調べてみよう。

SSE

 インテルCPUに備えられている演算命令群。もともとはマルチメディア向け演算機能としてリリースされたが、現在ではさまざまなアプリケーションで利用できる、多数の命令セットが追加されている。SSE命令を利用することで、複数の演算が並列かつ高速に実行でき、プログラムのパフォーマンス向上が期待できる。

 インテル コンパイラーの特徴の1つに「自動ベクトル化」がある。これはSSE(Streaming SIMD Extensions)と呼ばれるCPUの機能を利用することで数値演算の高速化を図るものだ。インテル コンパイラーは最新のCore i7といったCPUに搭載されているSSE4.2に対応しており、現行のほとんどのインテルCPUにおいて高速化が期待できる。本記事では、インテル コンパイラーでのSSEの使用と、その効果について解説する。

並列化

 アプリケーション内で、スレッドなどを使用して複数の処理を並列に同時実行させることを「並列処理」と呼び、並列処理を行うようにプログラムを改良することを「並列化」と呼ぶ。今日では複数のコアを備えるマルチコアCPUが普及しつつあるが、マルチコアCPUは複数の処理を同時実行できるため、プログラムを並列化することでパフォーマンスの向上が期待できる。

 従来は高級サーバーでしか採用されていなかったマルチCPU/マルチコアが、一般的なPCにも普及しつつある。このようなマルチCPU/マルチコア環境において、高速に動作するアプリケーションを開発するために注目されているのが「並列化」技術である。本記事では、この並列計算の基本的な考え方やそのメリット、利用できるライブラリなどについて紹介する。

 並列処理は、一般には実装が難しい、という印象があるが、「OpenMP」や「Threading Building Blocks」といった並列化技術を利用することで、並列化へのハードルは大幅に低くなる。また、インテルの開発製品「Parallel Studio」に含まれる「Parallel Composer」には、独自の並列化支援機能を備えたC/C++コンパイラが含まれている。本記事では、このような技術を利用した並列処理の実装方法を、簡単な画像処理アプリケーションを例に説明していこう。

プログラムのパフォーマンス分析

 作成したプログラムのパフォーマンスに問題がある場合、性能解析ツールを利用して問題点を分析するのが一般的だ。性能解析ツールには様々なものがあるが、その中でも高機能なものとしてインテルが開発する性能解析ツール「インテル VTune パフォーマンス・アナライザー」がある。VTunesを利用してプログラムを解析することで、パフォーマンスが低下する原因を特定することが可能だ。

 作成したプログラムのパフォーマンスに問題がある場合、性能解析ツールを利用して問題点を分析するのが一般的だ。性能解析ツールには様々なものがあるが、その中でも高機能なものとしてインテルが開発する性能解析ツール「インテル VTune パフォーマンス・アナライザー」がある。本記事ではパフォーマンスの問題が発見されたプログラムを対象に、このインテル VTune パフォーマンス・アナライザーを使用して問題点の調査とパフォーマンスの改善を行う例を紹介する。

OpenMP

 OpenMPはさまざまなプラットフォームで利用できる、並列プログラミングを実装するためのAPIである。C/C++およびFORTRANで利用でき、既存のコード中の並列化したい部分にプラグマの形で命令を埋め込むことで、比較的容易にプログラムを並列化できる。

 従来は高級サーバーでしか採用されていなかったマルチCPU/マルチコアが、一般的なPCにも普及しつつある。このようなマルチCPU/マルチコア環境において、高速に動作するアプリケーションを開発するために注目されているのが「並列化」技術である。本記事では、この並列計算の基本的な考え方やそのメリット、利用できるライブラリなどについて紹介する。

 インテル コンパイラーではOpenMP 3.0やC++ラムダ関数、並列コンパイルといった、新規格や最近注目されている機能がいち早く取り入れられている。本記事では、インテル コンパイラーが採用した新規格について解説する。

Threading Building Blocks

 「Threading Building Blocks」(TBB)は、並列処理を実装するためのC++向けテンプレートライブラリだ。スケーラビリティに優れており、また柔軟に処理を実装できる点が特徴である。TBBはインテル コンパイラーやインテル Parallel Studioといったインテルのコンパイラ製品に付属しているほか、オープンソース版も公開されており、特にC++で記述されたプログラムを並列化するのに有用である。

 C++で並列アプリケーションを実装するためのテンプレートライブラリとして、インテルがリリースしている「Intel Threading Building Blocks」(TBB)がある。TBBはインテル コンパイラーやインテル Parallel Studioといったインテルのコンパイラ製品に付属しているほか、オープンソース版も公開されている。本記事ではこのTBBの概要と、基本的な使い方を解説する。

C++0x

 最近では関数型プログラミングやジェネリックプログラミングといった新しいプログラミングパラダイムの影響を受け、C++の機能を拡張すべくISO/IECのC++標準化委員会によって現在検討されているC++の新仕様が「C++0x」である。C++0xはまだ策定中であるが、インテル コンパイラーなど一部のコンパイラはC++0xの機能の一部をすでにサポートしている。

 インテル コンパイラーではOpenMP 3.0やC++ラムダ関数、並列コンパイルといった、新規格や最近注目されている機能がいち早く取り入れられている。本記事では、インテル コンパイラーが採用した新規格について解説する。

新着記事

記事一覧を見る

カテゴリ

インテル ソフトウェア最新情報

関連リンク