ガイド付き自動並列化

同カテゴリーの次の記事

ベクトル化および最適化レポート

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Guided Autoparallelism」の日本語参考訳です。


インテル® Composer XE Linux* 版には、ガイド付き自動並列化 (GAP) 機能が含まれており、Fortran と C/C++ の両方で利用できます。この機能は、ベクトル化と並列化を行うプログラマーを支援するために設計されており、コンパイラーの -vec-report オプションを補完します。GAP は、プログラマーが理解しやすい用語で、ベクトル化と並列化に関する情報を提供します。

注: 2012 年 9 月時点で、GAP 機能はインテル® Composer XE 2013 Linux* 版のホスト・コンパイラーでのみ動作します。ネイティブ MIC コンパイラー (-mmic を使用) では利用できません。この機能はホスト・プラットフォームで使用しますが、提供されるアドバイスは MIC コンパイラーのベクトル化と並列化にもあてはまります。ホスト・コンパイラーでソースファイルに GAP を使用して、アドバイスを適用し、ホストで変更を確認します。この変更は、アプリケーションをホスト用にコンパイルする場合だけでなく、アプリケーションを MIC 用にコンパイルする場合にも効果があります。

はじめに

GAP はインテル® コンパイラーの機能です。この機能は、-guide コンパイラー・オプション (-guide、-guide-vec、-guide-par または -guide-data-trans) を指定すると有効になります。これらのオプションを使用した場合、コンパイラーはバイナリーを生成しません。代わりに、コードを解析して、ベクトル化 (-guide-vec オプション) や、並列化 (-guide-par オプション) についてのアドバイス、あるいは両方のアドバイス (-guide オプション) を提供します。また、より最適なデータアクセスを行いパフォーマンスが向上するように、データ構造を変更する方法に関するアドバイスも提供します (-guide-data-trans オプション)。

GAP は、レポートを生成する -vec-report や -opt-report オプションとは異なり、ベクトル化と並列化に関するアドバイスをユーザーに示すことを目的としています。GAP は、ベクトル化または並列化されない (-parallel または -openmp なしで) コードのループの入れ子を解析して、そのループの入れ子を最適化するアドバイスを提供します。GAP は次の 3 つのカテゴリーのアドバイスを提供します。

  1. ベクトル化または並列化でコンパイラーを支援するコンパイラー・オプションおよびプラグマ。
  2. コンパイラーを支援するコード変換または変更。GAP は変更方法を示しますが、コードを直接変更しないことに注意してください。プログラマーがコードを変更する必要があります。
  3. 最適化の障害を排除するコンパイラー・オプション。

GAP の利用に関して

GAP の概要は、”GAP – Guided Auto Parallelism” (英語) 資料をご覧ください。

さらに詳しい情報については、インテル® コンパイラーに含まれている GAP のチュートリアルおよびサンプルを参照してください。このチュートリアルおよびサンプルは、Fortran と C/C++ の両方で利用できます。製品ドキュメントはコンパイラーと同じルートパスにインストールされます。デフォルトは、/opt/intel/composerxe/Documentation/ja_JP ディレクトリーです。このディレクトリーに含まれている、コンパイラー (Fortran または C++) の『入門』ページをご覧ください。

  • Fortran <ドキュメントへのパス>/get_started_lf.htm#tutor
  • C/C++ <ドキュメントへのパス>/get_started_lc.htm#tutor

インテル® コンパイラーの『ユーザー・リファレンス・ガイド』には GAP の使用に関するドキュメントも含まれています。上記の『入門』ページには各ドキュメントへのリンクがあります。スクロールして、『ユーザー・リファレンス・ガイド』を見つけたら、ドキュメントを開きます。目次から、「主な機能」 > 「ガイド付き自動並列化」を開いてください。

コンパイラーのドキュメントはオンラインでも提供されています。http://software.intel.com (英語) を参照してください。

まとめ

ガイド付き自動並列化 (GAP) はインテル® Fortran/C++ コンパイラーとともに提供される最適化を支援する機能です。GAP は、コードのループの入れ子をベクトル化/並列化するためのアドバイスを開発者に提供します。GAP は 次の 3 つのカテゴリーのアドバイスを提供します。

  1. ベクトル化または並列化でコンパイラーを支援するコンパイラー・オプションおよびプラグマ。
  2. コンパイラーを支援するコード変換または変更。GAP は変更方法を示しますが、コードを直接変更しないことに注意してください。プログラマーがコードを変更する必要があります。
  3. 最適化の障害を排除するコンパイラー・オプション。

ダウンロード: gap.pdf

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事