この記事は、インテル® デベロッパー・ゾーンに掲載されている「Guided Autoparallelism」(http://software.intel.com/en-us/articles/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 つのカテゴリーのアドバイスを提供します。
- ベクトル化または並列化でコンパイラーを支援するコンパイラー・オプションおよびプラグマ。
- コンパイラーを支援するコード変換または変更。GAP は変更方法を示しますが、コードを直接変更しないことに注意してください。プログラマーがコードを変更する必要があります。
- 最適化の障害を排除するコンパイラー・オプション。
GAP の利用に関して
GAP の概要は、GAP – Guided Auto Parallelism (https://software.intel.com/sites/default/files/managed/ee/91/gap.pdf) 資料をご覧ください。
さらに詳しい情報については、インテル® コンパイラーに含まれている 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 つのカテゴリーのアドバイスを提供します。
- ベクトル化または並列化でコンパイラーを支援するコンパイラー・オプションおよびプラグマ。
- コンパイラーを支援するコード変換または変更。GAP は変更方法を示しますが、コードを直接変更しないことに注意してください。プログラマーがコードを変更する必要があります。
- 最適化の障害を排除するコンパイラー・オプション。
ダウンロード: https://software.intel.com/sites/default/files/managed/ee/91/gap.pdf
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。