XLsoft Corporation/エクセルソフト株式会社
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
 Intel Compiler インテル コンパイラー  Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
コンパイラー
 Intel Performance Analyzer インテル パフォーマンス アナライザー  Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
VTune
アナライザー
 Intel Performance Library インテル パフォーマンス ライブラリー  Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
パフォーマンス
ライブラリー
 Intel Threading Tool インテル スレッド化ツール  Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
スレッド化
ツール
 Intel Cluster Tools インテル クラスタ ツール  Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
クラスタ ツール
 Intel Software College インテル・ソフトウェア・カレッジ  Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
トレーニング
 Intel Software College インテル・ソフトウェア・カレッジ  Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
XML 製品

Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
インテル ホーム インテル ホーム
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
インテル 購入 購入情報
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
技術情報 技術情報
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
インテル ダウンロード ダウンロード
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
インテル サポート サポート
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
インテル 登録 製品の登録
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College

Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
一般的な FAQ
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College

並列化にはどのようなテクニックがありますか。
下の図は並列化の実装と難易度の相関関係を示しています。

  • コンパイラーの自動並列化を活用
    コンパイラーは安全に並列実行できるループを検出し、これらのループに関してマルチスレッド コードを自動的に生成します。もっとも簡便な並列化方法です。
  • 並列化済みパフォーマンス・ライブラリーの活用
    OpenMP 等を使用して高度にスレッド化された関数ライブラリーを活用することで、最新のマルチプロセッサー上で優れたパフォーマンスを容易に得ることができます。
  • OpenMP を利用
    ソース中に OpenMP で規定された宣言子を挿入し、明示的に並列化を行います。
  • インテル® スレッディング・ビルディング・ブロック (TBB) の活用
    並列アルゴリズム/データ構造がテンプレート化されたライブラリーです。
  • ネイティブ・スレッドを実装
    Win32 API、POSIX 等の API 関数を通して同期とスレッド待機を明示的に管理します。

インテル® ソフトウェアは並列化をどのようにサポートしていますか。
インテル® ソフトウェアは、マルチスレッド対応の優れた開発ツールを提供します。

インテルではどのような並列化手順を推奨しますか。
次の並列化手順を推奨します。

  1. ボトルネックを特定
    まず、VTune パフォーマンス・アナライザー を使用して、実行に一番時間がかかっている関数 (ボトルネック) を特定します。インテルでは簡単にボトルネックが検出できるよう、Windows/Linux プラットフォーム用に VTune パフォーマンス・アナライザーを用意しています。
  2. 並列化を実装
    ステップ 1 で特定したボトルネックに対して並列化を実装します。 下記の方法があります。
    • インテル® コンパイラーの自動並列化機能を使用して、ループに対して並列化を適用します。自動並列化機能は依存関係のないループ (※1) に有効です。コンパイラーのレポート機能を利用することで、並列化できないループと原因を知ることができます。
    • 自動並列化を適用できないループに対しては、OpenMP をお試しください。ソース中に OpenMP で規定された宣言子を挿入し、コンパイルを行います。また、単純に異なるタスクの並列処理であれば OpenMP の Section 構文の使用をお奨めいたします (※2)。
    • 実行に時間のかかる関数を、既に最適化/並列化済みの数値演算ライブラリー (MKL)マルチメディア用ライブラリー (IPP) の API に置き換えて、パフォーマンスが向上するかどうかご確認ください。
    • ボトルネックとなる関数やループが複雑な処理を行っていて、自動並列化、OpenMP やインテル ライブラリーを適用できないような場合は、インテル® TBB ライブラリーをお試しください。
  3. 並列化した部分をデバッグ/チューニング
    インテル® スレッド・チェッカー/スレッド・プロファイラー
    を使用して並列化した部分をデバッグ/分析し、並列化特有のバグやスレッドの状態を確認することが重要です。解が合わない、予期しない問題が発生する、またはパフォーマンスが思ったように上がらないといった問題を容易に特定することができ、問題の早期解決に貢献します。

※1 詳細はインテル® コンパイラー自動並列化ガイド (PDF) の 5 ページ目 "自動並列化の阻害要因とその対策" と 15ページ目 "付録.2 依存性解析"をご参照ください。

※2 OpenMP の Section 構文については下記をご覧ください。
インテル® C/C++コンパイラー OpenMP 活用ガイド (PDF) 17 ページ
インテル® Fortran コンパイラー OpenMP 活用ガイド (PDF) 19 ページ


インテル® コンパイラー自動並列化について
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College

自動並列化とは? また、どのように適用できますか。
自動並列化とは、コンパイラーがソースコードを解析し、プログラムの構造に適したマルチスレッド実行が可能な実行モジュールを自動的に生成します。生成されるバイナリーはマルチコア・プロセッサー向けに最適化され、アプリケーション処理性能の効率化が図られます。

自動並列化は、コンパイル時にコンパイル・オプションとして、/Qparallel スイッチ(Windows)、-parallel スイッチ (Linux、Mac OS) を指定してコンパイルを行うことで可能となります。これらのオプションが指定されると、コンパイラーは入力されたファイルに対してその並列処理の可能性の解析と並列化のための最適化を行います。

どのようなコードを自動並列化できますか。
コンパイラーの自動並列化によりコードを並列化する場合、コードがいくつかの条件を満たしている必要があります。自動並列化の対象となるのは、C/C++ とFortran などでの「ループ」による反復計算部分で、かつ依存関係のないループです。

自動並列化されたバイナリーは、従来の Pentium 4 のシステムで動作するのでしょうか。
動作します。コンパイラーの自動ディスパッチャー機能は、特にソースコード内でスレッド数を定義していない限り、システムに搭載されているプロセッサー数を自動で判別し、プロセッサーのリソースの数に合わせてスレッド数を設定します。ハイパースレッディング対応の Pentium 4 プロセッサーでは性能の傾向が異なります。

バージョン 9.1 で自動並列化できたコードがバージョン 10.xで自動並列化ができません。 どのように対処したらよいのでしょうか。
インテル® コンパイラーが自動並列化を行う際、並列効率を考慮してから並列化を行うという機能がバージョン10 から追加されました。そのため、コンパイラーはあるしきい値を超えた状態でないと自動で並列化を行いません。従って、このしきい値を変更する必要があります。/Qparthreshold (-parthreshold) でこのしきい値を調整できます。

自動並列化が適用されているか、どのように判断したらよいでしょうか。
コンパイル時のアウトプット・ウィンドウに "Auto Parallerized" と表示されている場合、自動並列化が適用されています。 また、/Qpar-report オプションを利用することで、詳細情報を得ることができます。

自動並列化の詳細はインテル® コンパイラー自動並列化ガイド マルチコア対応アプリケーション開発 (4) (PDF) をご覧ください。


OpenMP について
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College

OpenMP とは? また、どのように実装できますか。
OpenMP は、マルチスレッド並列プログラミングのための API (Application Programming Interface)で、C++ や Fortran の言語規格に準拠しています。

実装の際は、プログラム内に OpenMP で規定された宣言子を挿入し、インテル® コンパイラーのようなOpenMP をサポートするコンパイラーでコンパイルを行います。インテル® コンパイラーではコンパイル時にコンパイル・オプションとして Windows の場合 /Qopenmp スイッチを、また Linux/Mac OS の場合は-openmp スイッチを指定します。

詳細は下記をご覧ください。
インテル® C/C++コンパイラー OpenMP 活用ガイド マルチコア対応アプリケーション開発 (2) (PDF)
インテル® Fortran コンパイラー OpenMP 活用ガイド マルチコア対応アプリケーション開発 (3)(PDF)

OpenMP を適用するメリットは何ですか。
OpenMP はスケーラブルに性能が発揮できるよう設計されているので、コア数が増えた場合でもソースを変更することなく容易に対応ができます。以下のようなメリットが挙げられます。

  • 並列化の際に、どこをどのように並列化するかのみ考えればよいので、ネイティブスレッドに比べて特別な関数やロジックを考える必要がない。
  • ソースコードがそれほど増えないので保守が容易。
  • スケーラブルに性能が向上するように設計されているため、将来マルチコア化が進んでも特別な対応が必要ない。
  • OpenMP 用オプションの有無だけでシングルスレッドとマルチスレッドが切り替わるので簡単に性能差や結果を比較することができる。また、OpenMPを利用したコードはシングルスレッドでも動作する。
  • 並列アプリケーションのプロトタイプを簡単に作成することができる。

OpenMP を使用する際の注意点は?
OpenMP 宣言子は、コンパイラーに対して並列化のためのヒントを与えるのでなく、明示的に並列化を指示するという事に注意する必要があります。間違った宣言子を指定しても、コンパイラーはその指示に従って並列化を行います。また、データの依存性などがあっても、コンパイラーは警告メッセージやエラーメッセージを出し、その指示を無視することなく忠実に並列化を行いますので、依存性があるループなどを OpenMPで並列化した場合には、計算結果が不正になります。

OpenMP を使用した場合、並列化特有の問題は発生しますか。
変数がグローバルで Shared の場合、並列化特有の問題が発生する可能性があります。 インテル® スレッド・チェッカーでこれらの問題の有無を容易に判定できます。

OpenMP を用いて開発したバイナリーを配布するときの注意点は何かありますか。
OpenMP 用の再配布ライブラリーを配布する必要があります。
例) libguide.lib、libguide40.lib、libguide40.dll等
<インストールディレクトリ>/license フォルダーにある fredist.txt (または credist.txt) ファイルは、インテル® コンパイラーの再配布可能なライブラリーをリストしています。このファイルにリストされていう限り、ロイヤルティーフリーで自由に配布可能です。

OpenMP を適用する箇所はどのように特定できますか。
OpenMP 適用のためのステップは次のようになります。

  1. インテル® VTune パフォーマンス・アナライザーを使いプログラムの動作の詳細な解析を行い、ホットスポットを検出します。
  2. ホットスポットに対してOpenMP 宣言子の適用などを検討します。データの依存関係などのために並列化できない部分などについては、依存関係の解消のために行うプログラムの変更を行います。この時、他のハイレベルの最適化手法(ソフトウェア・パイプラインやベクトル化)などに影響を与えるときがあります。この並列化による他のハイレベルの最適化の阻害は避ける必要があります。そのためには、並列化の適用時と非適用時の性能を比較検討する必要もあります。

OpenMP で並列化したバイナリーを実行するとき、コア数を制限することができますか。また特定のコアを指定することができますか。
バージョン 10.0 以降に新しく追加された KMP_AFFINITY 環境変数を使用することで指定できます。
詳細はバージョン10.1 のリリースノート "OpenMP アプリケーション用の KMP_AFFINITY 環境変数 " を参照してください。

インテル® コンパイラーが実装している OpenMP は他社が実装している OpenMP と比べてどのようなメリットがありますか。
インテル固有の OpenMP 拡張実装を利用することができます。たとえば、KMP_AFFINITY環境変数を利用すると、OpenMPで生成されるスレッドのアフィニティーを制御することができます。詳細についてはコンパイラーのマニュアルを参照してください。

ベクトル化と並列化の違いは何ですか。またどのように実装したらよいのでしょうか。
ベクトル化とは、命令レベルでのデータ並列の処理になります (ILP:Instruction Level Parallelism と呼ばれます)。ベクトル化は通常 1 命令で 1つのデータ要素しか使用できないところを、1 命令で複数のデータ要素を処理することにより、1 命令辺りの処理データ数を増やすことで高速化します。対して、並列化とは同時に複数の演算を行うことにより処理速度を高めることで高速化を行う手法です。

ベクトル化の実装についてはいくつか方法があります。SSE命令によるアセンブラー記述、組み込み関数の利用、ベクトル化をサポートするコンパイラーで自動的にベクトル化を行うという方法があります。 一番手軽に行えるのは、やはりコンパイラーの自動ベクトル化機能を使用することです。詳細はコンパイラー最適化ガイド(PDF) をご覧ください。

ループ処理で依存関係を取ることができません。どのように並列化したらよいでしょうか。
依存関係を排除できないループを並列化することはできますが、アクセス同期を行わなければならず、シングルスレッドよりもパフォーマンスが低下することもあります。パフォーマンス志向の並列化を実現するには、データ構造や関連を設計しなおす必要があります。また、並列化にはデータの並列化とタスクの並列化と二種類あります。上記内容はデータの並列化といって、同内容の計算を複数のスレッドに分割する並列化手法です。
もう一つの手法である、タスクの並列化を検討してみてください。 タスクの並列化とは全く処理内容が異なる関数を同時に並列化することで並列化を実現するという手法です。
タスクの並列化に関しては、ソニーデジタルネットワークアプリケーションズ株式会社様の事例をご覧ください。


ネイティブスレッドについて
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College

ネイティブスレッド (Win32API や POSIX) でスレッド化するときのデメリットは何ですか。
デメリットは以下の3点です。

  • ソースのサイズが増大する
  • ソースが複雑になる
  • スケーラブルな性能を得るのは困難

ネイティブスレッドを利用する場合、スレッドの生成、データの同期、スレッドへの作業分配などをすべて開発者が管理しなければいけません。そのため、将来プロセッサーのコア数が増えることを考慮し、スレッドの数とワークロードを適切に管理することは複雑で困難な作業を伴います。多くの場合、スレッド数を固定される場合多く、そのようなコードはスケーラブルな性能は期待できません。 そのため、将来プロセッサーのコア数が増えた場合、何らかの改変を行う必要性が発生する可能性が出てきます。

ネイティブスレッドに対し、OpenMP や TBB ライブラリーはスケーラブルに性能が発揮できるよう設計されているので、コア数が増えた場合でもソースを変更することなく容易に対応ができます。

最終的にはネイティブスレッドで実装を考えています。プロトタイプでは OpenMP を使うことを考えていますが、何か注意点はありますか。
ネイティブスレッドは物理スレッドの制御を目的としているため、必ずしも OpenMP と同じようにスケーラブルに性能が出ない場合があります。その場合、ローレベルでの実装を色々と検討する必要が生じてきます。何か特定の理由がない限り、OpenMP でそのまま実装いただくことを推奨します。


ライブラリーについて
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College

TBB ライブラリーについて

オープンソースを用いて開発した製品を商用化することができますか。
はい、できます。

オープンソースを用いて作られた製品があります。ソースコード開示義務が発生しますか。
TBB ライブラリーのオープンソースは GNU Runtime Exception (GNU GPLv2) を採用しています。そのため、TBB ライブラリーのソースコードに何も変更を加えていない場合はソースコード開示義務は発生しないとインテル社では考えております。最終的には御社法務ご担当者のご判断に基づきます。
GNU GPLv2 についてはこちらをご覧ください。

MKL ライブラリーについて

MKL を用いて並列化するにはどうしたらよいですか。
スレッド化された数値演算ライブラリーを使用したハイパフォーマンス・ コンピューティング・アプリケーション (PDF) をご参照ください。

また、入門ガイドの "スレッド化" のセクションをご利用ください。
Windows 版
Linux 版
Mac OS 版

IPP ライブラリーについて

IPP を用いて並列化するにはどうしたらいいですか。
マルチスレッド・ライブラリーを使用したデジタル・メディア・アプリケーションのパフォーマンスの向上 (PDF) をご覧ください。

FAQ 情報 (英語) もご利用ください。


その他
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College
Intel, インテル, 処理速度, 分析, 解析, パフォーマンス, 高速化, 最適化, コンパイラー, Compiler, 自動並列化, 画像処理, ソフトウェア, アプリケーション, Windows, Linux, Windows CE, .NET, Unix, C言語, C++, Fortran, フォートラン, VTune Performance Analyzer, Intel Threading Tool, Intel Thread Checker, Intel Thread Profiler, Intel Math Kernel Library, Intel Cluster Math Kernel Library, Intel Integrated Performance Primitives, Intel Graphics Performance Primitives, Intel Trace Analyzer, Intel Trace Collector, Intel Software College

インテル® ソフトウェアが並列化をサポートする言語以外 (VB、Java 等) を使用しています。その場合、並列化はできないのでしょうか。
C#、VB:
Thread クラスを実装することで並列化を行うことができます。API についての詳細は MSDN をご参照ください。

スレッドクラスについては、下記のマイクロソフト社のサイトをご参照ください。
スレッド処理 (C# プログラミング ガイド)
VB マイグレーション Tips スレッドの作成と実行方法について
マルチコア コンピュータ用にマネージ コードを最適化する

画像処理、信号処理、マルチメディア関連であれば、既に最適化/並列化済み IPP をC# からラッパーで利用することも検討できます。詳細はこちら (英語) をご参照ください。

Java:
Thread クラスを実装することで並列化を行うことができます。書籍 "The Art of Multiprocessor Programming" (英語) を参考いただけるかと思います。 Appendix (付録) に C と C# に関する記載があります。


Top へ