インテル® MIC アーキテクチャーの準備
この記事は、インテル® デベロッパー・ゾーンに掲載されている「Preparing for the Intel® Many Integrated Core Architecture」の日本語参考訳です。
インテル® メニー・インテグレーテッド・コア・アーキテクチャーの準備
インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャー製品ファミリーは、高度な並列アプリケーションまたはアプリケーション内の高度な並列カーネルのパフォーマンスを引き出すために最適化されています。インテル® Xeon Phi™ コプロセッサーは、この製品ファミリーの 1 つです。
はじめに
インテル® Composer XE 2013 SP1 開発スイートには、インテル® MIC アーキテクチャー製品ファミリー向けのアプリケーションおよびライブラリーをビルドできる、インテル® C/C++ コンパイラー、インテル® Fortran コンパイラー、インテル® パフォーマンス・ライブラリーが含まれています。この記事は、インテル® Composer XE コンパイラー・パッケージで配布されているコンパイラー・ドキュメントの補足資料で、インテル® Xeon Phi™ コプロセッサー固有の推奨事項および手法を掲載しています。この記事は、インテル® Xeon® プロセッサーからインテル® Xeon Phi™ コプロセッサーにアプリケーションを移植するユーザーを支援するため、またインテル® Xeon Phi™ コプロセッサーでアプリケーションのパフォーマンスを引き出すために必要なチューニング手法を提供する目的で作成されました。ここでは、コンパイラーの最適化における概念のみをカバーしており、インテル® MIC アーキテクチャーのすべての最適化トピックは含まれていません。例えば、すべての環境設定、データ移動の概念と考慮事項、ランタイム設定は含まれません。
インテル® Xeon Phi™ コプロセッサー上にアプリケーションを移植し、チューニングを行うには、各リンクのトピックを参照してください。このアーキテクチャーでアプリケーションのパフォーマンスを最大限に引き出すために必要なステップを紹介しています。
目標
インテル® Xeon® プロセッサーおよびインテル® MIC アーキテクチャーで最適なパフォーマンスを引き出すための、アプリケーションの準備に関する情報を掲載します。具体的には、アルゴリズムにおける考慮事項とパフォーマンスを引き出す一般的なコーディング手法に焦点を当てています。考慮すべきアプリケーションの重要な点についても説明します。以下のトピックがあります。
- 予備情報: ドキュメントの参照、サポート・コミュニティー、基本的な開発環境の要件
- インテル® MIC アーキテクチャーに適したアプリケーション解析
- ユーザー・ソース・コードの変更
- メモリーアクセスとループの変換 (キャッシュ・ブロッキング、ループアンロール)
- データ構造の変換 (AoS から SoA への変換、ポインター追跡)
- 大きなページの最適化
トピック
予備情報: ドキュメントとサポートの参照
作業を適切に行うには、コンパイラー/ツールのドキュメントとサポートを参照できなくてはなりません。以下の情報をブックマークしておくか、いつでも参照できる場所に保存してください。あるいは、将来参照できるように、このドキュメントをブックマークしてください。
-
リリースノート: コンパイラーのリリースごとに、このドキュメントを参照してください。MIC 対応のコンパイラーに関する情報は追記されており、最新情報はこのドキュメントに記述された後、通常のドキュメントに記述されます。リリースノートは、インテル® レジストレーション・センター (IRC https://registrationcenter.intel.com) またはプレミアサポート (http://premier.intel.com) からダウンロードすることができます。リリースノートは、<インストール・ディレクトリー>/composersxe/Documentation/en_US/ にコンパイラー・パッケージとともにインストールされます。ファイル名は、Release_Notes_F_2013_L_EN.pdf (Fortran) および Release_Notes_C_2013_L_EN.pdf (C/C++) です。日本語版は ja_JP ディレクトリー以下にあります。デフォルトのインストール・ディレクトリーは /opt/intel です。
-
製品ドキュメント: コンパイラーのドキュメントは、<インストール・ディレクトリー>/composerxe/Documentation/en_US/ にインストールされます。オンラインで参照することもできます (C++ ドキュメント (英語) および Fortran ドキュメント (英語))。環境の設定およびコンパイラーの使用に関する情報が記載された「はじめに」セクションからお読みください。チュートリアル、サンプル、ドキュメントのリンクも含まれています。すぐに参照できるように、これらのページをブックマークしてください。
-
オンライン・コミュニティー: インテル® MIC デベロッパー・ポータル (英語) から、ドキュメント、wiki、最新ニュース、ユーザーフォーラムにアクセスすることができます。このページが MIC オンラインサポートのポータルとなります。このポータルを参照して、MIC 関連の情報を確認しておくことを推奨します。
-
一般的なサポート: インテル® MIC デベロッパー・ポータル (http://software.intel.com/mic-developer) (英語) では、さまざまなサポート情報が提供されています。
製品のドキュメントでヘルプが見つからない場合は、リリースノート、または MIC デベロッパー・ポータルのコンテンツからサポート情報を参照してください。インストールやライセンスの質問、使用方法、MIC のプログラミング手法やヘルプ、最適化のヒントなど、MIC 固有の質問は、インテル® メニー・インテグレーテッド・コア・アーキテクチャーのユーザーフォーラム (英語) をご覧ください。インテルのツールおよびテクノロジーに関する一般的な (MIC 固有ではない) 質問は、インテル® デベロッパー・ゾーン・フォーラム (英語) をご覧ください。コンパイラー・ユーザー向けのフォーラムとして、インテル® C/C++ コンパイラーのユーザーフォーラム (英語)、インテル® Fortran コンパイラー Linux*/OS X* 版のユーザーフォーラム (英語) およびインテル® Visual Fortran コンパイラー Windows* 版のユーザーフォーラム (英語) もあります。
-
バグレポート: コンパイラーが原因でコンパイル中にクラッシュしたり、明らかに正しくない動作や結果になった場合は、コンパイラーのバグとしてレポートしてください。パフォーマンスが期待値に達しないのは、ほとんどの場合バグではありません。数値の違いがコンパイラーのバグであることは非常に稀です。レポートを作成する前に、問題が再現するテストケースを用意してください。
コンパイラーのバグと思われる問題のレポートには、前述のデベロッパー・フォーラムを利用できます。プレミアサポートのアカウントをお持ちの場合は、プレミアサポートでレポートすることもできます。レポートを開発者コミュニティーに公開してもかまわない場合は、ユーザーフォーラムにレポートすることを推奨します。インテルおよびコミュニティーにより見つかった回避策をお試しください。レポートをインテルのサポートエンジニア以外に公開したくない場合は、プレミアサポートにレポートしてください (フォーラムでも、ユーザーまたはインテルが問題を ‘Private’ とマークして、そのユーザーとインテルのみスレッドを見ることができるように設定することは可能です)。プレミアサポートに寄せられた一般的な質問に対しては、該当するユーザーフォーラム、wiki、オンライン・ドキュメントをご案内いたします。プレミアサポートはバグをレポートする場合、あるいはプライバシーが必要な場合にご利用ください。
-
コンパイラー、デバッガー、ライブラリーのダウンロード: インテル® Xeon® プロセッサーおよびインテル® Xeon Phi™ コプロセッサーの両方に対応したコンパイラー、デバッガー、ライブラリーを含む、最新のインテル® Composer XE パッケージにアクセスするには、インテル® レジストレーション・センター (IRC) にログインします。インテル® コンパイラーを含むインテル® ソフトウェア開発ツールの登録ユーザーは、IRC からインテル® Xeon Phi™ プラットフォーム・ソフトウェア・スタック (MPSS) を入手できます。インテル® コンパイラーまたはインテル® Parallel Studio XE 製品のライセンスをお持ちでない場合は、こちらから MPSS を入手できます。
- ビデオ (英語)
事前の作業: インテル® コンパイラー 13.0 以降でビルドして実行
インテル® Xeon Phi™ コプロセッサーは、インテル® Composer XE 2013 以降の製品ファミリーに含まれている、バージョン 13.0 以降のインテル® C/C++ コンパイラー、インテル® Fortran コンパイラー、およびランタイム・ライブラリーでサポートされています。インテル® Composer XE 2011 SP1 (以前) に含まれる、バージョン 12.1 以前のコンパイラーは、インテル® MIC アーキテクチャーをサポートしていません。このため、最初のステップは、インテル® MIC アーキテクチャーをサポートしている Composer XE パッケージを入手し、オンラインのクイック・スタート・ガイド (英語) またはコンパイラー (ツール) のリリースノートの説明に従って開発環境を設定することです。makefile、cmake、ビルドスクリプトを適切に変更してください。インテル® C/C++ コンパイラーまたはインテル® Fortran コンパイラーでアプリケーションをビルドして実行し、結果が正しいことを確認します。
事前の作業: 開発ホストの設定
クイック・スタート・ガイド (英語) の説明に従って開発プラットフォームを設定します。ホスト開発プラットフォームの設定について質問または問題がある場合は、MIC デベロッパー・コミュニティー・フォーラム (英語) でお問い合わせください。インテル® Xeon® プロセッサー・ホスト上で単純な ‘hello world’ プログラムを実行して、正しくコンパイラーがインストールされていることを確認してください。インストール前に ‘source <インストール・ディレクトリー>/bin/compilervars.sh intel64′ または ‘source <インストール・ディレクトリー>/bin/compilervars.csh intel64′ コマンドを実行するか、この source 文を ~/.bashrc スタートアップ・ファイルに追加してください。
並列パフォーマンスを向上する最も一般的な手法
次のステップ
この記事は、「Programming and Compiling for Intel® Many Integrated Core Architecture」 (英語) の一部「Preparing for the Intel® Many Integrated Core Architecture」の翻訳です。インテル® Xeon Phi™ コプロセッサー上にアプリケーションを移植し、チューニングを行うには、各リンクのトピックを参照してください。インテル® Xeon Phi™ コプロセッサーでアプリケーションのパフォーマンスを最大限に引き出すために必要なステップを紹介しています。
-
インテル® MIC アーキテクチャーに適したアプリケーション解析では、アプリケーションを解析してインテル® Xeon® プロセッサーおよびインテル® Xeon Phi™ コプロセッサーで最適なパフォーマンスを達成する方法を説明します。
-
ソースコードの変更では、最終的なパフォーマンスの指標となる、いくつかのユーザーレベルの最適化を示します。これらの高度なテクニックは必須ではありませんが、アプリケーションのパフォーマンスをさらに引き出す方法として紹介されています。パフォーマンスを最大限に引き出す際に参照すべき情報として覚えておいてください。以下のトピックは、インテル® 64 アーキテクチャーとインテル® MIC アーキテクチャー間の ABI の違いを説明したものです。
まとめ
この記事では、メニーコア時代への移行に備えて、アプリケーション開発環境の設定と利用に関する情報、ドキュメントとサポートに関する情報、アプリケーションを検証する際の考慮事項を紹介しました。
-
この機会に、オンラインの開発コミュニティーであるインテル® MIC デベロッパー・ポータル (http://software.intel.com/mic-developer) (英語) に是非ご参加ください (このページをブックマークしてください)。また、コンパイラーのドキュメントの場所を確認しておいてください。アップデートごとに、新しい情報が含まれていないか、コンパイラーのリリースノートをチェックすることも忘れないでください。質問、ヒント、バグレポート用に、インテル® MIC デベロッパー・コミュニティー・フォーラム (英語) を是非ブックマークしてください。
-
アプリケーションが最新のインテル® Composer XE 2013 (以降の) コンパイラーで正しくビルドおよび実行できることを確認してください。インテル® MIC アーキテクチャーは、これらの新しいコンパイラー・パッケージでのみサポートされています。
-
インテル® MIC アーキテクチャーに対応した開発ホスト・プラットフォーム環境の設計を完了しているかを確認してください。
-
次のステップに進む前に、インテル® MIC アーキテクチャー (インテル® Xeon Phi™ コプロセッサーなど) への移植に適したアプリケーションにするため、アプリケーションの特性を理解しておいてください。アプリケーションが移植に適していない場合、適したアプリケーションにするため、またはなぜそのアプリケーションがインテル® Xeon® プロセッサーのような汎用アーキテクチャーで最高の効率が得られるのか理解するために必要なステップを確認してください。iSUS では、この分野の記事が数多く公開されています。
-
この記事では、パフォーマンスを引き出すさまざまなコーディング手法も紹介しました。これらの手法は、アプリケーションのパフォーマンスを最大限に引き出す際に活用してください。
次のトピック
インテル® コンパイラーの基本的な使用方法では、コンパイラーのオプションと使用法を紹介します。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。