並列手法の概要

インテル(R) コンパイラーでサポートされている並列プログラミングの 3 つの主要機能は次のとおりです。

これらの機能はそれぞれ、プロセッサー数、ターゲット・アーキテクチャー (IA-32、インテル(R) 64、IA-64 アーキテクチャー)、アプリケーションの特性に応じて、アプリケーションのパフォーマンスの向上を実現します。並列プログラミングのこれらの機能を組み合わせて使用し、アプリケーションのパフォーマンスを高めることができます。

OpenMP API で定義される並列処理は、スレッドレベルの並列処理とタスクレベルの並列処理に基づくものです。自動並列化処理手法で定義される並列処理は、スレッドレベルの並列処理 (TLP) に基づき、自動ベクトル化手法で定義される並列処理は、命令レベルの並列処理 (ILP) に基づきます。

並列プログラミングを明示的に 行う場合は、開発者が OpenMP API と関連オプションを使用して定義します。また、暗黙的に 行う場合は、コンパイラーによる自動検出を実行します。暗黙的な並列処理は、最外ループの自動並列化、または最内ループのベクトル化自動処理のいずれか (または両方) を実装します。

ベクトル化の自動処理を使ってコードのコンパイル処理を強化するために、ベクトライザー宣言子をプログラムに追加することもできます。

自動ベクトル化に密接に関連した手法であるソフトウェアのパイプライン化 (SWP) は、IA-64 アーキテクチャー・ベースのシステムで利用できます。

次の表は、インテル(R) コンパイラーで利用可能な並列処理の各種実装方法をまとめたものです。

並列手法

サポートするシステム

暗黙的 (コンパイラーおよびユーザー指定のヒントによって生成される並列処理)

自動並列化
(スレッドレベルの並列処理)

 

  • IA-32 アーキテクチャー、インテル(R) 64 アーキテクチャー、IA-64 アーキテクチャーをベースとしたマルチプロセッサー・システム、およびマルチコア・プロセッサー

  • ハイパースレッディング・テクノロジー対応のシステム

自動ベクトル化 (命令レベルの並列処理)

  • インテル(R) Pentium(R) プロセッサー、MMX(R) テクノロジー インテル(R) Pentium(R) プロセッサー、インテル(R) Pentium(R) II プロセッサー、インテル(R) Pentium(R) III プロセッサー、インテル(R) Pentium(R) 4 プロセッサー、インテル(R) Core(TM) プロセッサー、インテル(R) Core(TM) 2 プロセッサー、インテル(R) Atom(TM) プロセッサー

明示的 (ユーザーによってプログラミングされる並列処理)

OpenMP (スレッドレベルの並列処理とタスクレベルの並列処理)

  • IA-32 アーキテクチャー、インテル(R) 64 アーキテクチャー、IA-64 アーキテクチャーをベースとしたマルチプロセッサー・システム、およびマルチコア・プロセッサー

  • ハイパースレッディング・テクノロジー対応のシステム

インテルでは、インテル(R) マス・カーネル・ライブラリー (インテル(R) MKL) など、高度に最適化され、広範囲にスレッド化されたルーチン群を含むパフォーマンス・ライブラリーを提供しています。

インテル(R) コンパイラーでサポートされているこれらの主な機能のほか、特定のオペレーティング・システムでは、明示的なスレッド制御を提供するプログラム・インターフェイス (API) 関数がサポートされています。例えば、Windows* オペレーティング・システムでは、CreateThread などのような API 呼び出しがサポートされています。また、いくつかのオペレーティング・システムで POSIX* スレッド API がサポートされています。

パフォーマンス解析

並列プログラムのパフォーマンス解析には、パフォーマンス情報を表示するインテル(R) VTune(TM) パフォーマンス・アナライザーやインテル(R) スレッド化ツールを利用できます。最も多くの実行時間を必要としているコード部分の特定、また並列パフォーマンスの問題箇所の特定に関する詳細情報が得られます。

スレッド化に関する資料

既存のシリアル・アプリケーションをスレッド化する方法や、新しいスレッド化アプリケーションを設計する際の注意事項などの一般的な情報については、「その他の資料」および Web サイト (http://go-parallel.com) を参照してください。