並列化の使用

このセクションでは、インテル(R) コンパイラーでサポートされている並列プログラミングの 3 つの主要機能について説明します。

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

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

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

インテル・コンパイラーは、IA-32 アーキテクチャー、インテル(R) 64 アーキテクチャー、および IA-64 アーキテクチャーをベースとしたマルチプロセッサー・システム、デュアルコア・プロセッサー・システム、およびハイパースレッディング・テクノロジー (HT テクノロジー) 対応のシステムで、OpenMP と自動並列化をサポートします。

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

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

下記の表に、インテル・コンパイラーで利用可能な並列処理の各種実装方法の概要を示します。

並列処理

説明

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

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

 

サポートするシステム:

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

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

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

サポートするシステム:

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

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

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

サポートするシステム:

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

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

パフォーマンス解析

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