システムの紹介 各種手続き 使い方と注意事項 アプリケーション一覧 講習会情報 FAQ
HOME > アプリケーション一覧 > Intel C/C++ コンパイラ

Intel C/C++

機能概要

Intel C++ Compiler for Linux は、先進の最適化機能、マルチスレッド・アプリケーションおよびハイパー・スレッディング・テクノロジへの対応、業界標準のツールや規格との互換性といった特徴を備えています。特に大きな特徴として、以下に示すように、高度な最適化機能とGNU C との優れた互換性をあげることができます。

■高度な最適化機能

 

・直接アドレス参照可能な浮動小数点命令を効率的に実行
・プロシージャ間の最適化による性能向上
・プロファイルに基づく最適化によりコードのレイアウトが最適化されることでコードサイズも縮小することによる性能向上
・一部のデータ参照に対するプリフェッチ命令をプログラムの特定の場所に挿入し、参照先のデータ・アイテムを実際に使用する前にプロセッサに近い場所 (キャッシュ・メモリ) に格納することにより、メモリ・アクセスのレイテンシを効果的に隠蔽
・従来のアーキテクチャと異なり、条件分岐時の実行はプレディケート修飾をつけた分岐命令でインプリメントすることで、基本ブロックサイズの縮小や分岐予測ミスによるペナルティの排除により性能向上
・分岐に関する情報をIntelコンパイラからプロセッサに対して伝達できることによる分岐予測ミスの頻度の低下
・ある種の命令 (レイテンシの大きいロード命令など) をプログラムの実行順に関係なく投機的に実行しておく機能であるスペキュレーションに対応
・ソフトウェアパイプラインのサポート
 

■GNU C との互換性

Intel C++コンパイラは、ソースコードとオブジェクト・コードにおいて、GNU Cと極めて高い互換性を備えています。GNU CとIntel コンパイラはABI(Application Binary Interface) レベルでも互換性を備えています。 また、gccの拡張機能も多数導入されました。このため、既存のソフトウェアをIntel C++ コンパイラ で再コンパイルするだけでアプリケーションのパフォーマンスを改善できます。Intelコンパイラ9.0とgcc3.2を比較すると30%以上高速なプログラムが生成することが可能です。

 

並列化に関する機能と特徴

以下では、並列化に関する機能と特徴を示します。

  1. OpenMPの対応
  2. OpenMP は移植性に優れたマルチスレッド・アプリケーション開発のための業界標準であり、細粒度 (ループ・レベル) および粗粒度 (関数レベル) のマルチスレッド化が効率的に行えます。OpenMP ではディレクティブを使って逐次型のプログラムにコメント行を書き加えれば並列化が行えるため、逐次型プログラムと並列型プログラムを別々に管理する必要もありません。
    Intel C++ コンパイラは OpenMP API バージョン 2.0 に対応しており、共有メモリ型並列プログラミング・モデルに則してコード変換を行います。これまでの OpenMP C API 1.0 に加え、新たに OpenMP C API 2.0 にも対応したIntel C++ コンパイラは、マルチスレッド・アプリケーションの開発とデバッグを強力にサポートします。

  3. 自動並列化機能への対応
  4. Intel コンパイラには、ループを自動的にスレッド化する自動並列化機能が搭載されています。Linux 版Intelコンパイラは自動並列化機能と高レベルの SMP (Symmetric Multi-Processing) プログラミング・モデルに対応しており、SMP システムにおける並列実行性を向上させることができます。自動並列化機能が安全に並列実行できるループを検出し、これらループに関してマルチスレッド・コードを自動的に生成するため、イタレーションのパーティショニング、データの共有、スレッドのスケジューリング、同期化といった低レベルの細かい作業をユーザが行わなくても並列化が行えます。

  5. SGI MPT(Message Passing Toolkit)の利用
  6. MPTは次に示す業界標準のメッセージ・パッシングライブラリを最適化した製品であり、システムにおいて利用することが可能です。
    ・Message Passing Interface (MPI)
    ・Shared Memory Access(SHMEM)ライブラリ
    メッセージ・パッシング方式は、メモリを分散して配置する並列処理マシンで広く使われています。
    MPTライブラリはMPI-1.2の仕様を完全に準拠しています。さらにMPI-2の機能について以下に示す機能をサポートしています。
    ・並列 I/O
    ・片方向 put / get モデル 転送
    ・MPIによるプロセスの生成
    ・メモリの割り当て

プログラミング手法やコードの最適化・並列化に関する詳細な説明については、マニュアルや関連サイトのリンク先の情報をご参照ください。

 

利用方法

利用マシン

uva, uvb

実行方法

uva% icc ( C コンパイラの場合)
uva% icpc ( C++コンパイラの場合)

 

サンプル

サンプルファイルは、/usr/appli/intel/composer_xe_2013_sp1/Samples/ja_JP/C++ にあります。
各サンプルの説明については、以下を参考にしてください。
なお、下記の説明にある<install-dir>とは、/usr/appli/intel/ のことを指しています。

  • サンプル[日本語][英語](システムのIDとパスワードが必要)

マニュアル

 

関連サイト